oops concepts c object oriented programming concept tutorial
Ta vadnica razlaga koncepte OOPS v jeziku C #. Izvedete lahko o načelih objektno usmerjenega programiranja, kot so polimorfizem, inkapsulacija, dedovanje in abstrakcija:
Objektno usmerjeno programiranje je programski model, ki deluje na principu, ki se vrti okoli predmetov in ne akcije ali logike. Uporabnikom omogoča, da na podlagi zahteve ustvarijo predmete in nato ustvarijo metode za upravljanje teh predmetov.
Cilj objektno usmerjenega programiranja je delo na teh objektih za dosego želenega rezultata.
=> Tukaj raziščite celotno serijo vadnic za C #
Popravimo nekaj konceptov, ki smo se jih naučili v naših prejšnjih vajah !!
Imenski prostor
Imenski prostor v C # je zbirka razredov. Zagotavlja strukturo, s katero eno ime razreda loči od imena drugega razreda, tako da jih prijavi v drug imenski prostor. Tako da razredi z istim imenom ne bi bili v nasprotju.
Razred
Razred je načrt podatkovnega tipa. Pravzaprav gre za zbirko predmetov. Vsebuje predmete in definicijo operacije, ki jo je treba izvesti nad tem objektom.
Predmeti
Predmeti so primerki razreda.
V naših prejšnjih vajah smo že podrobno spoznali razred in predmete.
Kaj se boste naučili:
Koncepti OOPS v jeziku C #
Objektno usmerjeno programiranje ponuja več prednosti pred drugimi programi, kot so:
- Natančen in jasen modularni pristop k programom omogoča enostavno razumevanje in vzdrževanje.
- Razrede in predmete, ustvarjene v projektu, je mogoče uporabiti v celotnem projektu.
- Modularni pristop omogoča, da različni moduli obstajajo neodvisno, s čimer več različnim razvijalcem omogoča skupno delo na različnih modulih.
V tej vadnici se bomo bolj osredotočili na druge glavne koncepte OOPS:
- Kapsulacija
- Polimorfizem
- Dedovanje
- Abstrakcija
Kapsulacija
Enkapsulacija je objektno usmerjen koncept programiranja, ki programerjem omogoča zavijanje podatkov in delčkov kode v ohišje. Z uporabo programa enkapsulacije lahko člane enega razreda skrijete pred drugim razredom. To je kot obkrožitev logičnega elementa znotraj paketa. Omogoča le ustrezne informacije, ki so na voljo in vidne zunaj in tudi samo določenim članom.
Inkapsulacija se izvaja z uporabo specifikatorjev dostopa. Access Specifier se uporablja za določanje vidnosti in dostopnosti člana razreda v jeziku C #.
C # vsebuje naslednje specifikatorje dostopa.
kateri je najboljši brezplačni pretvornik video posnetkov
- Javno
- Zasebno
- Zaščiteno
- Notranji
Specifikatorji dostopa določajo vidnost razreda in njegove vrednosti. Omogoča vam, da podatke za določen del kode naredite vidne in jih skrijete pred drugim delom. Najpogosteje uporabljena vidljivost je javna in zasebna.
Oglejmo si jih.
Javno: Ključna beseda public omogoča svojim članom, da so vidni od kjer koli znotraj projekta. Ta specifikator dostopa ima najmanj omejitev vidnosti.
Zasebno: Do zasebnih članov lahko dostopa samo član istega razreda. Ta ima eno najbolj omejenih vidljivosti.
Zaščiteno: Zaščitena dostopnost omogoča dostop do člana znotraj razreda in iz drugega razreda, ki ta razred podeduje.
Notranji: Notranja zagotavlja dostopnost znotraj projekta. Druga podobna notranja dostopnost je zaščitena notranja. To omogoča enako kot interno in edina razlika je v tem, da lahko podrejeni razred podeduje ta razred in doseže njegove člane celo iz drugega projekta.
Polimorfizem
Polimorfizem izhaja iz grškega slovarja, pomeni tistega z več oblikami. Poly pomeni mnogo, Morph pa pomeni oblike. Razredu v jeziku C # omogoča več izvedb z istim imenom.
Polimorfizem je v osnovi razdeljen na dva dela:
- Prevzemni polimorfizem
- Polimorfizem med izvajanjem
# 1) Statični ali časovni polimorfizem prevajanja
Polimorfizem v času prevajanja je znan tudi kot statični polimorfizem. Preobremenitev metode je eden od načinov doseganja polimorfizma v času prevajanja. Znan je kot polimorfizem v času prevajanja, saj se odločitev o klicu metode sprejme v času prevajanja.
To dosežemo tako, da ime metode ostane enako, vendar posredujemo različne sklope parametrov. Pri preobremenitvi metode sistem najprej preveri uporabljeni parameter in se na podlagi nabora parametrov odloči, da bo poklical ustrezno metodo.
Primer:
class Program { void print(int i, int j) { Console.WriteLine('Printing int: {0}', (i+j) ); } void print(string a, string b) { Console.WriteLine('Printing String: ' , (a+b)); } static void Main(string() args) { Program prog = new Program(); // Call print for sum of integers prog.print(5, 6); // Call to concatenate strings prog.print('Hello','World'); Console.ReadKey(); } }
V zgornjem primeru smo isto metodo dvakrat poklicali 'print' z uporabo različnih parametrov. Sprva kot parametra predajamo dve celi števili, nato pa kot parametra dva niza. Obstajata dva načina 'tiskanja' z istim imenom.
Ko posredujemo parameter s sistemom celih števil, bo poiskal metodo z imenom 'print', ki sprejema dva celoštevilčna parametra, in jo izvede, ne upoštevajoč drugih metod z istim imenom.
V drugem delu smo podali nizni parameter. Sistem bo spet iskal metodo, ki sprejema dva parametra niza. Na podlagi posredovanih parametrov bo torej prva metoda dodala dve celi števili, naslednja pa bo združila dva niza.
# 2) Dinamični polimorfizem ali polimorfizem med izvajanjem
Polimorfizem med izvajanjem ali dinamični polimorfizem se pojavi, kadar imata ime metode in podpis metode isto ime in parametre. Preglasitev metode je primer dinamičnega polimorfizma. Uporabniku omogoča ustvarjanje abstraktnega razreda z delno izvedbo vmesnika.
Preglasitev metode se doseže z dedovanjem. Za doseganje metode, ki ima prednost tako osnovni kot izpeljani razred, morata imeti isto ime in parameter. Med prevajanjem prevajalnik ne more prepoznati preglasitvene metode, zato ne povzroči nobene napake. Odločitev za zagon metode se sprejme med izvajanjem.
Primer:
class Program { public void print() { Console.WriteLine('Printing from class Program'); } } class Execute : Program { public void print() { Console.WriteLine('Printing from class Execute'); } public static void Main(string() args) { Execute exe = new Execute(); exe.print(); Console.ReadLine(); } }
Če zaženemo zgornji program, bomo dobili naslednji izhod:
Printing from class Execute
Čeprav je razred Execute podedoval vse metode razreda Program, ko pa smo poklicali metodo print, ki je prisotna v obeh razredih, bo metoda, prisotna v podrejenem razredu, preglasila metodo nadrejenega razreda.
Za izvajanje abstrakcije se uporablja dinamični polimorfizem. Uporabniku omogoča ustvarjanje abstraktnega razreda, ki se uporablja za izvedbo vmesnika, kadar ga podeduje izvedeni razred. Abstraktni razred lahko vsebuje imena / podpis metod, izpeljani razred pa ima lahko bolj specializirano definicijo metode.
Dedovanje
Dedovanje je pomemben del koncepta OOPS. Pri dedovanju definiramo razrede staršev in otrok. Podrejeni razred lahko podeduje vse metode, predmete in lastnosti nadrejenega razreda. Otroški razred ima lahko tudi svoje metode in specifično izvedbo.
Nadrejeni razred je znan tudi kot osnovni razred, podrejeni razred, ki podeduje osnovni razred, pa tudi izpeljani razred.
Primer:
class Program { public void print() { Console.WriteLine('Printing from class Program'); } } class Execute : Program { public static void Main(string() args) { Execute exe = new Execute(); exe.print(); Console.ReadLine(); } }
Tu imamo razred, imenovan kot program, ki ima eno metodo. Imamo še en razred Execute, ki podeduje razred Program. Razred Execute je izpeljani razred, program razreda pa je znan kot osnovni razred.
Zdaj, namesto da bi ustvarili primerek predmeta za program razreda, smo ustvarili primerek predmeta za razred Execute. Z uporabo tega primera lahko dostopamo do metode tiskanja iz osnovnega razreda.
Torej, rezultat zgornje kode bo:
Printing from class Program
Izpeljani razred ne podeduje le metod, ampak tudi skoraj vse člane razreda, kot so polja, lastnosti itd., Odvisno od vidnosti. Dedovanje v C # ne dovoljuje uporabe več dediščin, tj. En razred ne more podedovati iz več različnih razredov, vendar lahko en razred podeduje iz drugega razreda, ki lahko deduje iz drugega razreda.
Abstrakcija
Abstrakcija je eno glavnih načel objektno usmerjenega programiranja. Abstrakcija omogoča programerju, da svetu prikaže le potrebne podrobnosti, medtem ko ostale skriva. Abstrakcijo dosežemo v jeziku C # z uporabo razreda Abstract in vmesnika.
Razred lahko razglasimo kot abstraktni razred z uporabo ključne besede 'Abstract'. Razred Abstract v jeziku C # je vedno osnovni razred v hierarhiji. Zaradi česar se razlikujejo od drugih razredov, jih ni mogoče ustvariti. Abstraktni razred C # je treba podedovati.
Primer:
class Program { static void Main(string() args) { Hyundai hyn = new Hyundai(); String descp = hyn.Describe(); Console.WriteLine(descp); Console.ReadKey(); } } abstract class Car { public void Describe() { return 'Description of the car'; } } class Hyundai : Car { }
Rezultat tega je:
Description of the car
Če jo primerjate z našimi prejšnjimi primeri med dedovanjem ali dinamičnim polimorfizmom, boste našli podobnosti. Najbolj prepoznavna razlika je uporaba abstraktne ključne besede pred razredom Avto. Če želite to preglasiti ali zagotoviti lastno izvedbo, podobno kot smo storili pri dinamičnem polimorfizmu. Potem lahko to dosežete z naslednjim.
class Program { static void Main(string() args) { Hyundai hyn = new Hyundai(); String descp = hyn.Describe(); Console.WriteLine(descp); Console.ReadKey(); } } abstract class Car { public virtual string Describe() { return 'Description of the car'; } } class Hyundai : Car { public override string Describe() { return 'Description of the car is now Hyundai'; } }
Torej, če zaženete to kodo zdaj, bo dala naslednji izhod:
Description of the car is now Hyundai
Izvedena metoda razreda preglasi metodo osnovnega razreda. Na ta način lahko ustvarite drugačen izpeljani razred, kot so Ferrari, Porsche, BMW itd., Z lastnimi izvedbenimi metodami.
Če natančno pogledate, lahko vidite, da naša metoda opisa v abstraktnem razredu ne vsebuje nobene izvedbe.
Zakaj potem definiramo prazne metode?
Razlog za to je, da razred Abstract daje podpis metod in za podrazrede nalaga obveznost, da ustvarijo izvedbo za vse te metode. To omogoča skupno rabo osnovnega razreda, hkrati pa ohranja tudi preverjanje izvedbe metode izpeljanega razreda.
Vmesnik
V C # je vmesnik načrt razreda. Vmesnik je podoben abstraktnemu razredu in se uporablja za dosego stoodstotne abstrakcije. Vse metode, opisane v vmesniku, so privzeto abstraktne. Nima nobenega telesa metode in ga ni mogoče ustvariti.
Vmesnik se v glavnem uporablja za večkratno dedovanje in popolno abstrakcijo. Ves podpis metode, prijavljen znotraj vmesnika, mora imeti izvedbo razreda ali strukture, ki ga izvaja.
Primer:
class Program { static void Main(string() args) { Hyundai hyn = new Hyundai(); String descp = hyn.Describe(); Console.WriteLine(descp); Console.ReadKey(); } } interface Car { string Describe(); } class Hyundai : Car { public string Describe() { return 'Description of the car is now Hyundai'; } }
Rezultat zgornje kode bo:
Description of the car is now Hyundai
Tu smo ustvarili vmesnik Car. Ker vmesnik ne more imeti nobene definicije metode, smo v vmesniku navedli samo ime metode in vrsto vrnitve. Nato smo vmesnik Car uvedli v drug razred Hyundaija. V implementiranem razredu smo podali definicijo metod, opredeljenih znotraj vmesnika.
Zaključek
V konceptu objektno usmerjenega programiranja se vsak del programa obravnava kot objekt. Razred je zbirka podobnih vrst elementov, objekt pa je primerek razreda.
Inkapsulacija v C # omogoča uporabniku, da določi vidnost razreda in njegovih članov. Polimorfizem omogoča, da imajo metode isto ime, vendar z različnimi parametri znotraj istega razreda ali z istim parametrom v drugem razredu.
Dedovanje je, ko podrejeni razred, ki je znan tudi kot izpeljani razred, podeduje vse lastnosti, vključno z metodami, predmeti, polji itd. Nadrejenega razreda, ki je znan tudi kot osnovni razred. Abstrakcija omogoča programu, da prikaže samo podpis, medtem ko skriva podrobnosti o izvedbi.
Prečiščeni program
class Program { void print(int i, int j) { Console.WriteLine('Printing int: {0}', (i + j)); } void print(string a, string b) { Console.WriteLine('Printing String '+ a + b); } static void Main(string() args) { Program prog = new Program(); // Call print for sum of integers prog.print(5, 6); // Call to concatenate strings prog.print('Hello', 'World'); Hyundai hyn = new Hyundai(); String descp = hyn.Describe(); Console.WriteLine(descp); Console.ReadKey(); } } abstract class Car { public virtual string Describe() { return 'Description of the car'; } } class Hyundai : Car { public override string Describe() { return 'Description of the car is now Hyundai'; } }
=> Tukaj raziščite celotno serijo vadnic za C #
Priporočeno branje
- OOP Java: Uvod v objektno usmerjeno programiranje v Javi
- Objektno usmerjeno programiranje v jeziku C ++
- Vadnica za cevi Unix: Cevi v programiranju Unix
- Vadnica Python DateTime s primeri
- Repozitorij objektov v QTP - Vadnica št. 22
- Koncepti Python OOP (razredi, predmeti in dedovanje Python)
- Vadnica QTP št. 7 - Paradigma identifikacije predmetov QTP - Kako QTP enolično prepozna predmete?
- Spoznajte napredne koncepte skriptiranja Groovy za SoapUI - Vadnica SoapUI št. 9