Prvi programski jezici bili su imperativni jezici ili strojne upute (kodovi). Sastojali su se od binarnog koda koji se razlikovao ovisno o stroju. Skup mogućih naredbi za takve "jezike" niske razine bio je mali, budući da je svaka strojna naredba izvršila određenu radnju (dodavanje, kopiranje riječi stroja u registar, pomicanje na sljedeći odjeljak koda). Naravno, za praktičnost, programeri su razvili niz analognih pisama za ove timove strojeva, a ovaj način komuniciranja s strojom "željezo" naziva se asembler.
Asembler
Jezici na visokoj razini
Strukturno programiranje
Jezik programiranja C
Objektno orijentirano programiranje (OOP)
Polja
klasa Car
{
string brand = "Hunday" Solaris ";
string color = "Yellow";
dvostruka brzina = 0;
/* ostatak programskog koda * /
}
Encapsulation
Polja mogu promijeniti svoje značenje u tijeku programa, ako ga je osigurao programer.Ako autor ne želi da polja budu dostupna izvan klase, a neki drugi program (korisnik) može promijeniti svoje vrijednosti, on "oblaže podatke, tj. čini ih nedostupnima koristeći ključne riječi privatne, zaštićena. Yaksch Na primjer, sve klase u razredu možete učiniti javnim:
klasa Car
{
javna marka niza,
javna boja niza,
javna dvostruka brzina,
*
ostatak programskog koda
*
}
U ovom slučaju pristup ova polja neće biti ograničena. U sučelju možete slučajno ili namjerno promijeniti važne podatke u poljima koja su tonastaviti raditi ispravno utjecati na cijeli program
& lt; skripta & gt; (adsbygoogle = window.adsbygoogle || []). push ({});
klasa MainClass
{
javna static void Main ()
{
Car Automobil = new Car ();
car.colour = "red";
/* Ostatak aplikacijskog koda * /
}
}
, kako bi se spriječilo slučajno promjene podataka, razvijen ih enkapsulira. U slučaju strojeva u boji, umjesto da napiše javno privatno. Tada je promjena boje je izravno nemoguće.
Postupci
, postupak - alat koji omogućuje rad s margine klase ili s nekim drugim podacima. Kao i bilo funkcija u proceduralnim programskim jezicima, oni uzeti podatke i može vratiti rezultat izračuna ili ne da se vrate (npr prikaza nešto na konzoli). Na primjer:
, klasa Car
{
javna niz marke = "Hunday" Solaris "
, javna niz color =" Yellow „,
, javna dvostruka brzina = 0;
/* Ovdje su rješenja «Drive», koji se prenosi logičku vrijednost whatIsTrafficLight (vrijednosti samo lažne - crveno svjetlo ili istina - zeleno svjetlo, moguće je da se vozimo) * /
public void pogon (bool whatIsTrafficLight )
{
ako je (whatIsTrafficLight == istina)
{
brzine = brzina + 40,
}
drugi
{
brzine = 0,
}
}
}
Kao rezultat, primjenom postupka pogon se promijeni brzina klase
"uređaj". tipa skripta = " tekst /javascript "& gt;
var blockSettings = {blockId" RA-70350-45 "renderTo" yandex_rtb_R-A-70.350 do 45”, asinkroni: ! 0},
, ako je (document.cookie.indexOf ("abmatch =") & gt; = 0) = 70,35 tisuća blockSettings.statId,
Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings)} ), e = b.getElementsByTagName ("skripta") , d = b.createElement ("skripta"), d.type = "text /javascript", d.src = "//an.yandex.ru/system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ovo, ovaj.dokument," yandexContextAsyncCallbacks ");
Polimorfizam
Drugi "stup" razvoja objektno orijentiranog pristupa je polimorfizam. Bjorn Stroustrup, tvorac jezika C ++, formulirao je definiciju polimorfizma na sljedeći način: "Jedno sučelje - mnoge implementacije." Ukratko, polimorfizam je sposobnost stvaranja apstraktne klase koja opisuje cjelokupni dizajn strukture, a iz nje su već kreirane izvedbene klase koje implementiraju mehanizme koji nedostaju. Primjerice, pri stvaranju lika u računalnoj igri, sa stajališta objektno orijentiranog pristupa, logično je prvo primijeniti apstraktnu klasu Osobe, a iz nje se već stvaraju posebne klase: Strijelac, Iscjelitelj, Ratnik i tako dalje.
Ili primjer s automobilom. Ako radimo s jednim strojem, s nekoliko polja i metoda, nije potrebno da ručno mijenjamo nekoliko vrijednosti u kodu. Ali koliko takvih strojeva može biti? Ili, na primjer, korisnici na društvenoj mreži? Svatko ima ime, prezime, bračni status, fotoalbum, veliki broj vrijednosti, veze na druge stranice, druge korisnike i tako dalje. A ako se programeri društvenih mreža odluče na redizajn, a neke korisničke postavke mogu biti promijenjene ili uklonjene, onda će biti mnogo posla s ovim pristupom. Rješava ovaj problemski objektno orijentirani pristup. Nastava se ne stvara za svaki pojedini objekt, nego iz apstraktne klase, a iz nje se u početkustvoreni su nasljednici. Kao i kapsuliranje, polimorfizam je drugo najvažnije pravilo OOP-a.
Nasljeđivanje
Nasljeđivanje je drugo pravilo kada se koristi objektno-orijentirani pristup. Ona se sastoji u sposobnosti klase nasljednika da koristi značajke roditeljske klase. Na primjer, ako želimo imati motor u našoj floti, onda nije potrebno pisati ista svojstva za novu klasu. Umjesto toga, možete reći da je motocikl nasljednik klase iz automobila. Tada postaje moguće koristiti slična polja i metode stroja u klasi motocikla, na primjer, marka, boja, brzina. U kodu nasljeđivanja naznačeno je kako slijedi:
klasa Motocycle: Car
{
/* ostatak programskog koda * /
}
Polja i metode automobila klase-roditelj su dostupni za uporabu u klasi-nasljednici motocikla. Ukratko, nasljeđivanje je mehanizam za ponovno korištenje koda, a namijenjen je prikladnom i logično kompetentnom proširenju programa. Isto tako, nasljeđivanje pomaže u pridržavanju načela DRY (Nemojte se ponavljati). Prema ovom principu, kod ne bi trebao imati repetitivne stranice, jer stvara nepotrebno opterećenje prilikom kompajliranja i izvršavanja programa. Ako se u kodu pojavljuju ponavljajuća područja, potrebno ju je optimizirati - ponoviti ih zasebnim metodama i po potrebi prouzročiti; primijeniti nasljeđivanje na logički slične objekte koji imaju identična polja i metode.