Izrazi "predmet" i "klasa" poznati su svakoj osobi. Međutim, za računalne dizajnere oni imaju svoj vlastiti podtekst. To su osnovni pojmovi u objektno orijentiranom programiranju. Klase - tip podataka određuje programer, koji je karakteriziran načinom njihovog prijenosa i pohrane, profilom korištenja i skupom akcija koje mogu obavljati. Razlikuju se po tome što se može implementirati kao sučelje.
Što je OOP (objektno orijentirano programiranje)
Apstrakcija
Pokušavamo se selektivno usredotočiti samo na one stvari koje su nama važne (u životu) ili na naš modul (u programiranju). Promjena jednog nezavisnog modula ne utječe na druge. Jedino što trebate znati je ono što nam on daje. Osoba koja koristi ovaj modul ne mora brinuti o tome kako je zadatak riješen, što se događa u pozadini.
Inkapsulacija
Nasljeđivanje
Polimorfizam
Značajke pojmova "klasa" i "objekt"
tip
TForml = klasa (TForm)
Buttonl: TButton;
postupak ButtonlClick (pošiljatelj: TObject);
kraj;
može
Formal: TForml;
Ako želimo da se model u našem programu, kao što je auto, ona mora definirati svoje atribute: model, gorivo, brand, boju, njegovo ponašanje i tzv, pokretanje motora, kočenja, ubrzanja, itd , Jasno je da su ti pokazatelji karakteristični ne samo za jednu marku ili model vozila.
U objektno orijentiranom pristupu nastojimo generalizirati naš objekt (auto), tvrdeći da ćemo model u našem programu će imati broj atributa i metoda. Postoji svibanj biti drugih parametara i karakteristike vozila, ali mi smo navedeni dovoljno da shvate kako je klasa u PLO.
Kada koristimo ove podatke, stvaramo automobil s određenim parametrima. Kod programiranja isti predmet (iz auta), možemo uzeti različite karakteristike, kao što je prikazano u tablici u nastavku:
1 objekt | 2 Predmet |
model: VAZ 2107 | Model: VAZ 2109 |
gorivo: benzin | gorivo: dizel |
boja: crvena | boja: zelena |
postupak pokretanja motora: Početak () | postupak za pokretanje motora: Početak() |
metoda kočenja: prekid () | metoda kočenja: prekid () |
Metoda ubrzanja: ubrzanje () | Metoda ubrzanja: ubrzanje () |
Razredi OOP-a sastoje se od elemenata različitih tipova:
- Polja podataka: pohraniti status klase pomoću varijabli i struktura.
- Metode: potprogrami za manipuliranje navedenim podacima.
- Neki jezici dopuštaju da treća vrsta imovine bude. To je nešto između prva dva.
Metode
Ponašanje klase ili njezinih primjera određuje se metodama. To je potprogram s mogućnošću upravljanja objektima. Ove operacije mogu promijeniti status objekta ili jednostavno omogućiti načine pristupa.
& lt; script type = "text /javascript" & gt;
može blockSettings = {blockId: "R-A-70350-45", renderTo: "yandex_rtb_R-A-70350-45", async: 0};
if (document.cookie.indexOf ("abmatch =")) = 0) blockSettings.statId = 70350;
Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings}), e = b.getElementsByTagName ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ovaj, ovaj.dokument," yandexContextAsyncCallbacks ");
Postoje mnoge metode. Njihova podrška ovisi o jeziku. Neki su kreirani i pozvani pomoću koda programera, drugi (posebni, kao što su konstruktori,destruktori i operateri pretvorbe) stvaraju i pozivaju generirani kod kompilatora. Jezik može omogućiti programeru da definira ove posebne metode.
Sučelje
Ovo je definicija skupine apstraktnih djelovanja. On otkriva kakvo bi ponašanje trebalo prikazati određeni objekt bez navođenja načina na koji ga treba primijeniti.
Objekt može imati više uloga, a korisnici ga mogu koristiti s različitih gledišta. Na primjer, objekt tipa "ljudski" može imati ulogu:
- Vojnik (s ponašanjem "pucaj u neprijatelja").
- Čovjek (s ponašanjem "voli svoju ženu").
- Porezni obveznik (s ponašanjem "plaća poreze") i tako dalje.
Postavlja se pitanje zašto osnovna klasa svih objekata nije sučelje. Razlog je u tome što će u ovom slučaju svaka klasa morati provesti malu, ali vrlo važnu skupinu metoda koje će oduzeti nepotrebnu količinu vremena. Ispada da nisu sve klase zahtijevaju određenu provedbu - zadano po defaultu u većini slučajeva je dovoljno. Nema potrebe ignorirati bilo koje metode, ali ako situacija to zahtijeva, moguće je provesti njihovu zamjenu.
Dobar primjer su gumbi na prednjoj strani televizora. Može se reći da su sučelje između korisnika i ožičenja s druge strane kućišta uređaja.Osoba klikne gumb za uključivanje i isključivanje kako bi uključila i isključila uređaj. U ovom primjeru određeni TV je instanca, svaka metoda predstavljena je gumbom, a svi zajedno tvore sučelje. U svom najčešćem obliku, to je specifikacija skupine srodnih metoda bez njihove primjene.
Dizajner
Ovaj je kriterij odgovoran za pripremu objekta za djelovanje, na primjer, za postavljanje početnih vrijednosti za sve njegove podatke i njihove elemente. Iako igra posebnu ulogu, konstruktor je samo još jedna funkcija koja vam omogućuje prosljeđivanje informacija kroz popis argumenata. Možete ih koristiti za inicijalizaciju. Ime dizajnera klasa je isto.
Sljedeći primjer objašnjava koncept konstruktora klase u C ++ (zajednički programski jezik):
# uključiti
koristeći prostor naziva std;
klasa Linija {
public:
void setLength (double len);
double getLength (void);
linija (); //Izjava dizajnera
privatna: dvostruka duljina;
};
//Definicija funkcija, uključujući konstruktora
Line :: Line (void) {
cout "Object created" endl;
}
void Line :: setLength (double len) {
dužina = len;
}
double Line :: getLength (void) {
povratna dužina;
}
//Tijelo programa
int main () {
Linija crte;
//Duljina linije
line.setLength (6.0);
cout "Duljina retka:" line.getLength () endl;
povratak 0;
}
Kada se gornji kod kompilira i izvrši, daje sljedeći rezultat:
Objekt stvoren
Duljina crte: 6
Destructor
Ovo je posebna funkcija klase koja uništava objekt kaozavršava se samo područje djelovanja. Kada je objekt izvan vidokruga, automatski se poziva destruktor.
Sintaksa za destruktor je ista kao i za konstruktora, ali se ime klase u ovom slučaju koristi s oznakom "~" kao prefiksom.
Sljedeći primjer u C ++ objašnjava pojam destruktora:
# uključiti
koristeći prostor imena std;
klasa Linija {
public: void setLength (double len);
double getLength (void);
Red (); //Dizajnerske napomene
~ Line (); //Najava razarača
privatna: dvostruka dužina;
}
//Definicija funkcija, uključujući konstruktora
Line :: Line (void) {
cout "Object created" endl;
}
Linija :: ~ Red (void) {
cout "Objekt je udaljen" endl;
}
void Line :: setLength (double len) {
dužina = len;
}
double Line :: getLength (void) {
povratna dužina;
}
//Tijelo programa
int main () {
Linija crte;
//Duljina linije
line.setLength (6.0);
cout "Duljina retka:" line.getLength () endl;
povratak 0;
}
Kada se gornji kod kompilira i izvrši, daje sljedeći rezultat:
Objekt stvoren
]
Dužina crte: 6
Objekt je udaljen