0% found this document useful (0 votes)
58 views6 pages

Laborator 4: Etapa 1: Definirea Clasei Parinte: Companie

This document describes the implementation of inheritance and polymorphism in C# to manage employees, customers, and suppliers of a company. It defines a base Company class with common properties and methods. Derived Client and Supplier classes inherit from Company and add their own properties. The program demonstrates polymorphism by storing Company, Client, and Supplier objects in a list and calling their GenerateReport method, allowing each class to generate reports in their own way. It also shows passing objects by reference versus value.

Uploaded by

Anca Mihaela
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views6 pages

Laborator 4: Etapa 1: Definirea Clasei Parinte: Companie

This document describes the implementation of inheritance and polymorphism in C# to manage employees, customers, and suppliers of a company. It defines a base Company class with common properties and methods. Derived Client and Supplier classes inherit from Company and add their own properties. The program demonstrates polymorphism by storing Company, Client, and Supplier objects in a list and calling their GenerateReport method, allowing each class to generate reports in their own way. It also shows passing objects by reference versus value.

Uploaded by

Anca Mihaela
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

LABORATOR 4

C#
MOSTENIRE. POLIMORFISM
1. S se realizeze o aplicaie pentru gestiunea angajailor, 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;

detalii_companie = "Compania cu numele-" + companie.Denumire + " are adresa-" + companie.Adresa + " si telefonul-" + companie.Telefon; return detalii_companie; } #endregion #region interfata clasa public void TrimiteEmail (Companie companie) { Console.WriteLine("Nu se poate transmite mesaj catre compania-" + companie.Denumire + ". A fost transmis un mesaj postal la adresa: " + companie.Adresa); } public virtual int GenereazaRaport (Companie companie) { Console.WriteLine("A fost generat raportul pentru compania: " + companie.Denumire + " ......"); Console.WriteLine("Caracteristicile companiei " + companie.Denumire + " sunt: Telefonul este:" + companie.Telefon + " " + "Adresa Companiei este: " + companie.Adresa); return 1; } #endregion }

Etapa 2: Definirea clasei derivata: Client


class Client:Companie { private string _observatii = string.Empty; private string _adresaWeb = string.Empty; private string _adresaEmail = string.Empty; private string _denumire = string.Empty; private string _adresa = string.Empty; private string _telefon = string.Empty; public Client() { } public Client(string observatii, string adresaWeb, string adresaEmail, string denumire, string telefon, string adresa): base(denumire,telefon,adresa) { _observatii = observatii; _adresaEmail = adresaEmail; _adresaWeb = adresaWeb; } public string Observatii { get { return _observatii; } set { _observatii = value; }

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

Etapa 3: Definirea clasei derivata: Furnizor


class Furnizor:Companie { private string _datainfiintare = string.Empty; private string _adresaWeb = string.Empty; private string _adresaEmail = string.Empty; public Furnizor() { } public Furnizor(string data_infiintare, string adresa_web, string adresa_email) { _datainfiintare = data_infiintare; _adresaWeb = adresa_web; _adresaEmail = adresa_email; }

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

} #endregion }

Etapa 4: Utilizarea claselor: Companie, Client, Furnizor in programul principal


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

Client client1 = new Client("Client fara probleme", "www.pancronex.ro", "[email protected]", "Pancronex", "124389", "Strada Floreasca, Nr. 12, Bucuresti"); Client client2 = new Client("Probleme la achitarea facturilor", "www.adian.ro", "[email protected]", "Adian SRL", "986543", "Strada Mantulesti, Nr. 7, Timisoara"); List<Companie> listaCompanii = new List<Companie>(); listaCompanii.Add(companie1); listaCompanii.Add(companie2); listaCompanii.Add(furnizor1); listaCompanii.Add(furnizor2); listaCompanii.Add(client1); listaCompanii.Add(client2); foreach (Companie comp in listaCompanii) { comp.GenereazaRaport(comp); } #endregion #region apelare metoda clasa derivata, fara folosirea polimorfismului Console.WriteLine("******************ALTERNATIVA LA POLIMORFISM! *********************************"); Console.WriteLine("**************** ALTERNATIVA LA POLIMORFISM! *********************************"); foreach (Companie companie in listaCompanii) { switch (companie.GetType().ToString()) { case "Gestiune.Clase.Companie": companie.TrimiteEmail(companie); break; case "Gestiune.Clase.Client": Client client = companie as Client; client.TrimiteEmail(client); break; case "Gestiune.Clase.Furnizor": Furnizor furnizor = companie as Furnizor; furnizor.TrimiteEmail(furnizor); break; default: break; } } #endregion

TEMA: Sa se realizeze un program, conform specificatiilor prezentate in cartea Beginning C sharp 2008, scrisa de Jack Purdum, pagina 445-463

You might also like