You are on page 1of 6

LABORATOR 4

C#
MOSTENIRE. POLIMORFISM
1. Să se realizeze o aplicaţie pentru gestiunea angajaţilor, clientilor si furnizorilor unei companii (continuare laborator 3)

Etapa 1: Definirea clasei parinte: Companie
class Companie { private string _denumire = string.Empty; private string _telefon = string.Empty; private string _adresa = string.Empty; public Companie() { } public Companie(string denumire, string telefon, string adresa) { _denumire = denumire; _telefon = telefon; _adresa = telefon; } public string Denumire { get { return _denumire; } set { _denumire = value; } } public string Telefon { get { return _telefon; } set { _telefon = value; } } public string Adresa { get { return _adresa; } set { _adresa = value; } } #region functii_helper protected string Formateaza_Detalii_Companie(Companie companie) { string detalii_companie = string.Empty;

1

_adresaWeb = adresaWeb. private string _adresaWeb = string.Telefon + " " + "Adresa Companiei este: " + companie. } #endregion } Etapa 2: Definirea clasei derivata: Client class Client:Companie { private string _observatii = string. } set { _observatii = value. string adresaWeb. A fost transmis un mesaj postal la adresa: " + companie.Denumire + " are adresa-" + companie.Empty.Empty. string adresaEmail.Empty. Console.Denumire + ".. } 2 .WriteLine("Caracteristicile companiei " + companie. private string _denumire = string. string denumire..WriteLine("Nu se poate transmite mesaj catre compania-" + companie. _adresaEmail = adresaEmail. return detalii_companie. private string _adresa = string. public Client() { } public Client(string observatii.adresa) { _observatii = observatii.Adresa + " si telefonul-" + companie.detalii_companie = "Compania cu numele-" + companie.Empty.. private string _adresaEmail = string.Denumire + " sunt: Telefonul este:" + companie.")..Denumire + " . } public virtual int GenereazaRaport (Companie companie) { Console.Adresa).. string telefon. return 1.Empty.Empty.telefon. } public string Observatii { get { return _observatii. } #endregion #region interfata clasa public void TrimiteEmail (Companie companie) { Console. private string _telefon = string.Adresa).WriteLine("A fost generat raportul pentru compania: " + companie. string adresa): base(denumire.Telefon.

} } #region interfata_clasei public void TrimiteEmail(Client client) { Console. } set { _adresaEmail = value. } 3 . return 1.WriteLine("A fost transmis cu succes mesajul catre clientul-" + client.. } } public string AdresaEmail { get { return _adresaEmail. private string _adresaWeb = string.. private string _adresaEmail = string."). string adresa_email) { _datainfiintare = data_infiintare.Denumire + " sunt: Adresa web este:" + client. public Furnizor() { } public Furnizor(string data_infiintare. } public override int GenereazaRaport(Companie companie) { Client client = companie as Client.AdresaEmail + " iar observatiile asupra lui: " + client.WriteLine("Caracteristicile clientului-" + client.Empty.AdresaEmail). _adresaEmail = adresa_email.Empty. } set { _adresaWeb = value.. Console.Observatii). Console. } #endregion } Etapa 3: Definirea clasei derivata: Furnizor class Furnizor:Companie { private string _datainfiintare = string. _adresaWeb = adresa_web.WriteLine("A fost generat raportul pentru clientul: " + companie.. string adresa_web.Denumire + " la adresa: " + client.Empty.AdresaWeb + " " + "Adresa Email este: " + client.} public string AdresaWeb { get { return _adresaWeb..Denumire + " .

} } public string AdresaEmail { get { return _adresaEmail.. return detaliiFurnizor. furnizor.public string DataInfiintare { get { return _datainfiintare.WriteLine("Caracteristicile furnizorului " + furnizor. Console. } //functie test transmitere prin valoare public void modValoare(int x) { x = 8. } set { _adresaWeb = value.AdresaWeb = "". } public override int GenereazaRaport(Companie companie) { Furnizor furnizor = companie as Furnizor.AdresaEmail = "". } set { _datainfiintare = value. furnizor..WriteLine("A fost generat raportul pentru furnizorul: " + companie. } //functie test transmitere prin referinta public void modFurnizor(Furnizor furnizor) { furnizor. } } #region interfata clasei public void TrimiteEmail(Furnizor furnizor) { Console. } public string DetaliiFurnizor(Furnizor furnizor) { string detaliiFurnizor = furnizor..Denumire + " .DataInfiintare). } set { _adresaEmail = value.WriteLine("A fost transmis cu succes mesajul catre furnizorul-" + furnizor. Console.."). 4 .AdresaEmail).Formateaza_Detalii_Companie(furnizor).DataInfiintare = "". return 1.AdresaEmail + " Data infiintarii este: " + furnizor.. } } public string AdresaWeb { get { return _adresaWeb.Denumire + " sunt: Adresa web este:" + furnizor.AdresaWeb + " " + "Adresa Email este: " + furnizor.Denumire + " la adresa: " + furnizor.

AdresaWeb = "www. furnizor2. #region exemplu transmitere parametri prin referinta //este transmisa adresa obiectului furnizor. companie1.WriteLine("****************************************** POLIMORFISM *********************************").AdresaWeb = "www. Companie companie3 = new Companie(). Furnizor in programul principal #region utilizare_functii_polimorfice Console. furnizor2. furnizor2. Furnizor furnizor2 = new Furnizor(). furnizor2.Denumire = "Beta SA". Companie companie2 = new Companie().Telefon = "416567". companie2.Telefon = "425394". furnizor1.WriteLine("****************************************** POLIMORFISM *********************************"). furnizor1. furnizor1. furnizor1. string x = furnizor1.xerox. modificarile nu sunt int y = 20. companie2.Adresa = "Strada Basarabiei.} #endregion } Etapa 4: Utilizarea claselor: Companie.AdresaWeb = "www.com". Companie companie1 = new Companie(). companie1.modFurnizor(furnizor1).Denumire = "Alpha SRL".Telefon = "223344".piritex. Galati". Iasi". furnizor1.piritex.com". #endregion #region exemplu transmitere parametri prin valoare //este transmisa o copie. Nr 23.AdresaEmail = "piritex@yahoo. Nr 13. modificarile sunt facute pe obiectul in sine //in urma apelului acestei functii. denumirea si cele doua adrese vor fi vide furnizor1. #endregion 5 . furnizor2. furnizor1. furnizor1. Client.com". Galati". companie2. Furnizor furnizor1 = new Furnizor().AdresaEmail = "xerox@yahoo.com".com".modValoare(y). furnizor1.Denumire = "Piritex SRL".Denumire = "Piritex SRL". companie1.com". Bucuresti".Adresa = "Strada Domneasca. Console.DetaliiFurnizor(furnizor1). furnizor1. Nr 15.Telefon = "567423".Adresa = "Strada Poporului. Nr 15.Denumire = "Xerox SA".Adresa = "Strada Marmureni.AdresaEmail = "piritex@yahoo.

Add(companie2). "Adian SRL". furnizor.TrimiteEmail(furnizor).Add(furnizor2).GetType(). "www.Companie": companie.pancronex. conform specificatiilor prezentate in cartea „ Beginning C sharp 2008”. "panc@pancronex. "Pancronex". "Strada Floreasca.ro".Clase. "986543".TrimiteEmail(client).Add(furnizor1). } #endregion #region apelare metoda clasa derivata.Clase. foreach (Companie comp in listaCompanii) { comp. 12.adian.ro". listaCompanii.ro".ro". break.TrimiteEmail(companie). pagina 445-463 6 . Bucuresti").Add(companie1). scrisa de Jack Purdum.Furnizor": Furnizor furnizor = companie as Furnizor.Clase. "www. "Strada Mantulesti. 7.ToString()) { case "Gestiune. Timisoara"). Console.Add(client2). client. fara folosirea polimorfismului Console. } } #endregion TEMA: Sa se realizeze un program. "adi@adian. listaCompanii. Client client2 = new Client("Probleme la achitarea facturilor". listaCompanii. break. listaCompanii.Add(client1). case "Gestiune. foreach (Companie companie in listaCompanii) { switch (companie. listaCompanii. "124389".GenereazaRaport(comp). case "Gestiune. break.WriteLine("**************** ALTERNATIVA LA POLIMORFISM! *********************************"). Nr.Client client1 = new Client("Client fara probleme". default: break.Client": Client client = companie as Client.WriteLine("******************ALTERNATIVA LA POLIMORFISM! *********************************"). listaCompanii. List<Companie> listaCompanii = new List<Companie>(). Nr.