ZVONO

Ima onih koji čitaju ovu vijest prije vas.
Pretplatite se da primate svježe članke.
Email
Ime
Prezime
Kako želite čitati Zvono?
Nema neželjene pošte

Koncept objektno orijentisanog programiranja (OOP) pojavio se prije više od četrdeset godina, kao razvoj ideja proceduralnog programiranja. Ideologija proceduralnog programiranja, po mom mišljenju, nije ništa posebno: svi programi su predstavljeni skupom procedura i funkcija, dok su same procedure i funkcije nizovi naredbi, čije izvršenje mijenja vrijednosti varijabli u memoriji. . Glavni program u proceduralnom programiranju je i procedura (funkcija), čije tijelo može sadržavati pozive drugim procedurama i funkcijama - potprogramima. Suština proceduralnog programiranja je jednostavna: podaci su odvojeni, ponašanje je odvojeno. Pokušao sam prikupiti koje su strukture uključene u njega u posebnom odjeljku. Podjela koda na potprograme, prvo, dozvoljava, a drugo,.

Ideologija objektno orijentisanog programiranja, kao što ime govori, izgrađena je oko koncepta objekta. Objekt kombinuje i podatke i ponašanje. Objekt je bilo koji entitet s kojim se program bavi, odnosno: objekti domene koje modelira program; resursi operativnog sistema; mrežni protokoli i još mnogo toga. U suštini, objekat je isti, ali dopunjen procedurama i funkcijama koje kontrolišu elemente ove strukture. Na primjer, u proceduralnom programskom jeziku, varijabla bi se kreirala odvojeno za pohranjivanje imena datoteke i odvojeno za pohranjivanje njenog deskriptora (jedinstveni identifikator resursa u operativnom sistemu), kao i niz procedura za rad s datotekom: otvorite datoteku, pročitajte podatke iz datoteke i zatvorite datoteku. Sve ove procedure, pored uobičajenih parametara i varijabli za pohranjivanje rezultata, trebale bi prihvatiti isti deskriptor kako bi se razumjelo o kojoj datoteci je riječ. U objektno orijentisanom jeziku, u istu svrhu, bio bi opisan fajl objekat, koji bi takođe pohranio ime i rukohvat u sebi i pružio korisniku procedure za samo otvaranje, čitanje i zatvaranje (fajl povezan sa određenim objekt). Razlika bi bila u tome što bi ručka bila skrivena od ostatka programa, kreirana u kodu rutine za otvaranje datoteke i korištena samo implicitno od strane samog objekta. Dakle, korisnik objekta (programski kod programa izvan objekta) ne bi trebao svaki put proslijediti ručicu u parametrima procedure. Objekt je skup podataka i metoda za rad s tim podacima, od kojih neki mogu biti skriveni od svijeta oko njega, što uključuje detalje implementacije. Terminologija objektno orijentisanog programiranja biće detaljnije razmotrena u nastavku.

U objektno orijentisanom programskom jeziku, skoro sve je objekat, sa izuzetkom naredbi: i su objekti, a opis greške je objekat, i, konačno, glavni program je takođe objekat. Ostaje razumjeti što je objekt sa stanovišta samog programa, kako se stvara i koristi. Drugi osnovni koncept OOP-a je klasa. Klasa je novi tip podataka u poređenju sa proceduralnim programiranjem, čije se instance nazivaju objekti. Klasa je, kao što je već spomenuto, slična kompozitnom tipu podataka ili strukturi, ali je dopunjena procedurama i funkcijama (metodama) za rad sa svojim podacima. Sada je vrijeme da opišemo osnovne pojmove objektno orijentiranog programiranja.

Terminologija objektno orijentiranog programiranja

Prije nego što pređemo na opisivanje prednosti koje OOP daje programerima softvera u procesu i softverskim proizvodima, potrebno je upoznati se sa najčešće korištenim terminima u ovoj oblasti.

Klasa – tip podataka koji opisuje strukturu i ponašanje objekata.

Objekt – instanca klase.

Polje – element podataka klase: varijabla elementarnog tipa, strukture ili druge klase koja je dio klase.

Stanje objekta – skup trenutnih vrijednosti polja objekta.

Metoda – procedura ili funkcija koja se izvršava u kontekstu objekta na kojem je pozvana. Metode mogu promijeniti stanje trenutnog objekta ili stanje objekata koji su im proslijeđeni kao parametri.

Nekretnina – posebna vrsta metoda dizajniranih da modifikuju pojedinačna polja objekta. Imena svojstava su obično ista kao i nazivi odgovarajućih polja. Izvana, rad sa svojstvima izgleda potpuno isto kao rad s poljima strukture ili klase, ali u stvari, prije vraćanja ili dodjeljivanja nove vrijednosti polju, može se izvršiti programski kod koji vrši različite vrste provjera, na primjer, provjeru da li je nova vrijednost važeća.

Član razreda – polja, metode i svojstva klase.

Modifikator pristupa – dodatna karakteristika članova klase koja određuje da li im se može pristupiti iz eksternog programa, ili se koriste isključivo unutar granica klase i skriveni od vanjskog svijeta. Modifikatori pristupa razdvajaju sve članove klase na detalje implementacije i javno ili djelomično javno sučelje.

Constructor – posebna metoda koja se izvršava odmah nakon kreiranja instance klase. Konstruktor inicijalizuje polja objekta - dovodi objekat u njegovo početno stanje. Konstruktori mogu biti sa ili bez parametara. Konstruktor bez parametara naziva se zadani konstruktor, koji može imati samo jedan. Naziv metode konstruktora najčešće se poklapa sa imenom same klase.

Destructor – posebna metoda koju poziva okruženje za izvršavanje programa u trenutku kada je objekt uklonjen iz RAM-a. Destruktor se koristi u slučajevima kada klasa uključuje resurse koji zahtijevaju eksplicitno oslobađanje (datoteke, veze baze podataka, mrežne veze, itd.)

Interfejs – skup metoda i svojstava objekta koji su javno dostupni i dizajnirani za rješavanje određenog niza problema, na primjer, sučelje za generiranje grafičkog prikaza objekta na ekranu ili sučelje za čuvanje stanja objekta u datoteci ili bazi podataka.

Statički član – bilo koji element klase koji se može koristiti bez kreiranja odgovarajućeg objekta. Na primjer, ako metoda klase ne koristi jedno polje, već radi isključivo s parametrima koji su joj proslijeđeni, onda ništa ne sprječava da se koristi u kontekstu cijele klase, bez kreiranja zasebnih instanci iste. Konstante u kontekstu klase su obično uvijek statični članovi klase.

Ovo nije sve sa OOP terminologijom, ali će drugi koncepti povezani sa ovom paradigmom biti razmatrani u sledećem odeljku.

Prednosti objektno orijentiranog programiranja

Hajde sada da razgovaramo o svojstvima koja program stiče kada koristi objektno orijentisani pristup svom dizajnu i kodiranju. Čini mi se da je većina ovih svojstava prednost OOP-a, ali postoje i druga mišljenja o ovom pitanju...

    Enkapsulacija se odnosi na skrivanje detalja implementacije klase dodjeljivanjem pojedinačnim članovima odgovarajućim modifikatorima pristupa. Tako je sva funkcionalnost objekta usmjerena na interakciju s drugim programskim objektima grupirana u otvoreni interfejs, a detalji su pažljivo skriveni unutra, čime se glavni kod poslovne logike čuva od stvari koje mu nisu potrebne. Enkapsulacija poboljšava pouzdanost vašeg koda jer osigurava da se određeni podaci ne mogu mijenjati izvan klase koja sadrži.

    Nasljedstvo. Kamen temeljac OOP-a. U objektno orijentiranom programiranju, moguće je naslijediti strukturu i ponašanje klase od druge klase. Klasa od koje nasljeđuju naziva se bazna ili superklasa, a klasa koja se dobije kao rezultat nasljeđivanja naziva se izvedena ili jednostavno potomka. Bilo koja klasa može djelovati i kao nadklasa i kao potomak. Odnosi nasljeđivanja klasa čine hijerarhiju klasa. Višestruko nasljeđivanje je definicija klase izvedene iz nekoliko superklasa odjednom. Ne podržavaju svi objektno orijentirani programski jezici višestruko nasljeđivanje. Nasljeđivanje je efikasan način da se izoluju višekratni dijelovi koda, ali ima i nedostatke, o kojima će biti riječi kasnije.

    Apstrakcija. Sposobnost kombinovanja klasa u zasebne grupe, naglašavajući zajedničke karakteristike koje su značajne za sve njih (zajednička polja i zajedničko ponašanje). Zapravo, apstrakcija je posljedica nasljeđivanja: bazne klase nemaju uvijek vlastitu projekciju na objekte stvarnog svijeta, već su stvorene isključivo u svrhu isticanja zajedničkih karakteristika cijele grupe objekata. Na primjer, predmet namještaja je osnovni koncept za sto, stolicu i sofu, sve ih objedinjuje činjenica da su pokretna imovina, dio unutrašnjosti prostora, a mogu se izraditi za dom ili ured. , a također se odnose na "ekonomičan" ili "premium" ” na klasu. U OOP-u postoji poseban koncept za ovo: apstraktna klasa - klasa čiji objekti su zabranjeni za kreiranje, ali se mogu koristiti kao osnovna klasa. Nasljeđivanje i apstrakcija omogućavaju opisivanje programskih struktura podataka i odnosa između njih na potpuno isti način kao što izgledaju odgovarajući objekti u sistemu koji se razmatra.

    Primjer dijagrama klasa konstruisanog apstrakcijom tokom analize tipova postojećih vozila prikazan je na sljedećoj slici. Na gornjim nivoima hijerarhiju nasljeđivanja postoje apstraktne klase koje objedinjuju vozila prema najznačajnijim karakteristikama.


    Dijagram klasa ili hijerarhija nasljeđivanja "Vozila". Bijeli kvadrati predstavljaju apstraktne klase.

    Polimorfizam. Još jedna imovina koja je posljedica nasljeđivanja. Činjenica je da objektno orijentirani programski jezici omogućuju rad sa skupom objekata iz iste hijerarhije na isti način kao da su svi objekti njihove osnovne klase. Ako se vratimo na primjer s namještajem, možemo pretpostaviti da je u kontekstu kreiranja informacijskog sistema za prodavnicu namještaja razumno dodati uobičajeni metod „pokaži karakteristike“ osnovnoj klasi za sve vrste namještaja. Prilikom ispisivanja karakteristika svih vrsta robe, program bi ovu metodu pozivao neselektivno za sve objekte, a svaki konkretan objekat bi sam odlučio koje informacije će mu dati. Kako se ovo implementira: Prvo, osnovna klasa definira zajedničku metodu za sve sa zajedničkim ponašanjem. U slučaju našeg primjera, ovo će biti metoda koja ispisuje parametre zajedničke za sve vrste namještaja. Drugo, u svakoj izvedenoj klasi, gdje je to potrebno, redefiniraju osnovnu metodu (dodavanjem metode sa istim imenom), gdje proširuju osnovno ponašanje svojim vlastitim, na primjer, prikazuju karakteristike koje su karakteristične samo za određeni tip proizvod namještaja. Metoda u osnovnoj klasi ponekad ne mora sadržavati nikakav kod, već je potrebna samo za definiranje imena i skupa parametara - potpisa metode. Takve metode se nazivaju apstraktne metode, a klase koje ih sadrže automatski postaju apstraktne klase. Dakle, polimorfizam je sposobnost ujednačene komunikacije sa objektima različitih klasa preko specifičnog interfejsa. Ideologija polimorfizma kaže da za komunikaciju sa objektom ne morate znati njegov tip, već koji interfejs podržava.

    Interface. U nekim programskim jezicima (C#, Java) koncept sučelja je jasno definiran - to nisu samo javne metode i svojstva same klase. Takvi jezici, po pravilu, ne podržavaju višestruko nasljeđivanje i kompenzuju to tako što dozvoljavaju bilo kojem objektu da ima jedan osnovni objekt i implementira bilo koji broj interfejsa. U njihovoj interpretaciji, interfejs je kao apstraktna klasa koja sadrži samo opis (potpis) javnih metoda i svojstava. Implementacija interfejsa pada na pleća svake klase koja namerava da ga podrži. Isti interfejs mogu implementirati klase potpuno različitih hijerarhija, što proširuje mogućnosti polimorfizma. Na primjer, sučelje „snimanje/vraćanje informacija u bazu podataka“ mogu implementirati obje klase hijerarhije „namještaj“ i klase povezane s narudžbom za proizvodnju namještaja, a kada kliknete na dugme „sačuvaj“, program bi prošao kroz sve objekte, pitao bi ih za ovaj interfejs i pozvao odgovarajući metod.

Objektno orijentirano programiranje stalno se razvija, što dovodi do novih paradigmi kao što su aspektno orijentirano, predmetno orijentirano, pa čak i programiranje orijentirano na agente. Treba napomenuti da lovorike OOP-a proganjaju druge teoretičare, te žure da ponude svoje mogućnosti za njegovo poboljšanje i proširenje. Napisao sam posebnu napomenu o tome, ali sada želim reći nekoliko riječi o programiranju prototipa, koje implementira JavaScript jezik na strani klijenta. Prototipsko programiranje eliminira koncept klase, zamjenjujući ga prototipom - primjerom objekta. Dakle, u jeziku orijentisanom na prototip ne postoji koncept tipa objekta, ali postoji koncept obrasca ili prototipa. Prototip je instanca objekta iz koje se druge instance kreiraju kopiranjem (kloniranjem) njegovih članova. U JavaScriptu ne opisujete polja i metode klase, već prvo kreirate prazan objekat, a zatim mu dodajete potrebna polja i metode (u JavaScript-u metoda se može definirati i dodati objektu dinamički). Na isti način se kreiraju prototipovi, koje drugi objekti nazivaju svojim prototipom. Ako objekt nema neki metod ili polje koje je navedeno na lokaciji poziva, onda se traži među članovima njegovog prototipa. To sam takođe posebno opisao.

Neki elementi modernog objektno orijentisanog programiranja

Vrijeme ne miruje, a već je prošlo dosta vremena od pojave OOP-a, tako da ne treba da čudi da je danas vokabular objektno orijentisanog programiranja značajno porastao. Evo nekih novih pojmova i koncepata vezanih za OOP.

    Događaji . Posebna vrsta objekata kreiranih za obavještavanje nekih objekata o događajima koji se dešavaju s drugim objektima. U različitim programskim jezicima mehanizam događaja se implementira na različite načine: ponekad koristeći posebne sintaktičke konstrukcije, a ponekad koristeći osnovne OOP alate.

    Univerzalni tip. Koncept generičkih tipova nije direktno povezan sa konceptom OOP-a, ali je razlog za pojavu elemenata kao što su generička klasa, generički metod, generički događaj itd. Generički tip je tip koji je parametrizovan drugim tipom (skupom tipova). Što je ovaj tip parametra u kontekstu dizajna generičkog tipa nije poznato, iako je moguće ograničiti vrijednosti tipova parametara prisiljavajući ih da proizlaze iz određene klase ili implementiraju određena sučelja. Primjer je univerzalna klasa za sortiranje niza elemenata, gdje je tip elementa u nizu unaprijed nepoznat. Prilikom dizajniranja takve klase, važno je navesti da tip parametra mora podržavati operaciju poređenja. Kada kreirate objekte generičkih tipova, eksplicitno specificirate parametar, kao što je tip cijeli broj ili niz, a sam objekt počinje da se ponaša kao da je instanca klase kreirane posebno za sortiranje cijelih brojeva ili nizova.

    Izuzeci. Još jedan poseban tip objekta podržan mehanizmom za rukovanje greškama i izuzecima ugrađenim u određeni programski jezik. Izuzeci, pored koda greške, sadrže njegov opis, moguće uzroke i niz poziva metoda koji su se dogodili prije nego što se iznimka dogodila u programu.

Nedostaci objektno orijentisanog programiranja

Već sam rekao da je popularnost objektno orijentisanog pristupa ogromna. Takođe sam već primetio da ima dosta onih koji žele da prošire ovu paradigmu. Ali postoji još jedan način da se istaknete među ogromnom zajednicom stručnjaka za informacione tehnologije - to je da izjavite da se OOP nije opravdao, da nije lijek za lijek, već placebo. Među tim ljudima ima zaista vrhunskih specijalista, poput Aleksandra Stepanova, Edsgera Dijkstre i drugih, čije mišljenje zaslužuje pažnju, ali ima i onih za koje kažu da „lošem plesaču uvek nešto stane na put. ” Evo ih, najočitijih nedostataka OOP-a, koje stručnjaci ističu:

OOP generiše ogromne hijerarhije klasa, što dovodi do toga da je funkcionalnost raspoređena ili, kako kažu, zamagljena po osnovnim i izvedenim članovima klase, te postaje teško pratiti logiku rada određene metode.

U nekim jezicima svi podaci su objekti, uključujući elementarne tipove, a to neizbježno dovodi do dodatne potrošnje memorije i CPU vremena.

Takođe, na brzinu izvršavanja programa može negativno uticati implementacija polimorfizma, koji se zasniva na mehanizmima za kasno povezivanje poziva metode sa njegovom specifičnom implementacijom u jednoj od izvedenih klasa.

Ovo je dio programiranja fokusiran na razvoj web aplikacija (programa koji osiguravaju funkcioniranje dinamičkih web stranica World Wide Weba).

Web programski jezici su jezici koji su prvenstveno dizajnirani za rad sa web tehnologijama. Web programski jezici se mogu podijeliti u dvije grupe koje se preklapaju: klijent i server.

Web programski jezici su podijeljeni u dvije grupe

· Klijentski jezici

Kao što samo ime govori, programi na jezicima klijenta se obrađuju na strani korisnika, a obično ih izvršava pretraživač. Ovo stvara glavni problem klijentskih jezika - rezultat izvršavanja programa (skripte) ovisi o korisnikovom pretraživaču. Odnosno, ako je korisnik zabranio izvršavanje klijentskih programa, oni se neće izvršiti, ma koliko programer to želio. Osim toga, može se desiti da će se ista skripta različito izvršavati u različitim pretraživačima ili u različitim verzijama istog pretraživača. S druge strane, ako programer polaže nade u serverske programe, onda može pojednostaviti njihov rad i smanjiti opterećenje servera kroz programe koji se izvršavaju na strani klijenta, jer oni ne zahtijevaju uvijek ponovno učitavanje (generiranje) stranice.

· Jezici servera

Kada korisnik uputi zahtjev za stranicu (prati link ili unese adresu u adresnu traku svog pretraživača), pozvana stranica se prvo obrađuje na serveru, odnosno izvršavaju se svi programi povezani sa stranicom i samo zatim se vraća posjetitelju putem mreže kao datoteka. Ova datoteka može imati ekstenzije: HTML, PHP, ASP, ASPX, Perl, SSI, XML, DHTML, XHTML.

Rad programa već u potpunosti ovisi o serveru na kojem se nalazi stranica i o tome koja je verzija određenog jezika podržana. Programski jezici na strani servera uključuju: PHP, Perl, Python, Ruby, bilo koji .NET programski jezik (ASP.NET tehnologija), Java, Groovy.

Važan aspekt rada jezika na strani servera je mogućnost organizovanja direktne interakcije sa sistemom za upravljanje bazom podataka (ili DBMS) - serverom na kojem su informacije pohranjene na uredan način koji se može pozvati u bilo kom trenutku.

1.1 HTML. Kreiranje i uređivanje dokumenata

HTML (HyperText Markup Language) - jezik za označavanje hiperteksta - namijenjen je kreiranju web stranica. U ovom slučaju, hipertekst se podrazumijeva kao tekst povezan s drugim tekstovima pomoću pokazivača i veza.

HTML je prilično jednostavan skup kodova koji opisuju strukturu dokumenta. HTML vam omogućava da istaknete pojedinačne logične dijelove u tekstu (naslovi, pasuse, liste, itd.), postavite pripremljenu fotografiju ili sliku na web stranicu i organizirate veze na stranici za komunikaciju sa drugim dokumentima. HTML ne specificira specifične i precizne atribute oblikovanja dokumenta. Konkretnu vrstu dokumenta u konačnici određuje samo program pretraživača na računaru korisnika Interneta. HTML takođe nije programski jezik, ali web stranice mogu uključivati ​​ugrađene skripte u Javascript i Visual Basic Script i programe apleta u Javi.

Primjer kreiranja jednostavne HTML stranice koja prikazuje tekstualne informacije, ove informacije mogu biti bilo koje, na primjer, prikazat ćemo rečenicu "Napiši kod - napravi povijest":

content="text/html; charset=UTF-8"

http-equiv="content-type">

Izlaz običnog teksta

Pisanje koda - stvaranje istorije. (c) Sergej Gurov

Rezultat je prikazan na slici 1.

Slika 1. Najjednostavnija html stranica

Glavne THML oznake koje se koriste prilikom kreiranja web stranica:

- Govori gledaocu stranice da je ovo HTML dokument.

- Definira mjesto gdje se postavljaju različite informacije koje se ne prikazuju u tijelu dokumenta. Ovdje se nalaze oznaka naslova dokumenta i oznake tražilice.

- Definira vidljivi dio dokumenta.

- Postavlja naslov dokumenta u sadržaj pregledača stranice

- Stvara najveći naslov

- Citati u kurzivu

Kreira neuređenu listu

Kreiranje lista – lista se definiše dodavanjem male oznake ili broja ispred svakog elementa liste. Sama lista se formira pomoću kontejnera

    , a svaka stavka liste počinje oznakom
  • , na primjer, napravimo listu poznatih programskih jezika sa nabrajanjem:

    Označena lista

  • Delphi
  • GLSL – Shader Language
  • Rezultat je prikazan na slici 2.

    Slika br. 2. Označeni list

    Formatiranje html stranice, odnosno njenih elemenata, vrši se pomoću oznaka za formatiranje, na primjer:

    Hello World Kreira podebljani tekst "Hello Word"

    Hello Space Kreira kurziv tekst “Hello Space”

    Rezultat je prikazan na slici 3.

    Slika br. 3. Formatiranje teksta

    Oblikovanje teksta se može kombinirati, na primjer u ovom redu koda:

    Zdravo svijete- Piše da će tekst biti kurziv i podebljan u isto vrijeme.

    Oznaka se koristi za umetanje grafičkih elemenata .

    Grafika mora biti pripremljena unaprijed u nekom grafičkom uređivaču, ili dobijena pomoću digitalnog uređaja ili skenera, ili jednostavno možete snimiti gotovu sliku.

    Jednostavan primjer korištenja grafičke slike prilikom kreiranja web stranice:

    Rezultat je prikazan na slici 4.

    Slika br. 4. Formatiranje teksta

    Vrlo je lako zamijeniti bijelu pozadinu bilo kojom drugom pomoću atributa oznake Pozadina, na primjer:

    1.2 Upotreba okvira i obrazaca

    Okvir - okvir, okvir. Okviri dijele prostor prozora pretraživača na nezavisne dijelove u kojima se prikazuju različite informacije.

    Vrlo je zgodno koristiti okvire kada trebate prikazati podatke iz različitih izvora na ekranu. Da biste kreirali okvir, morate kreirati novu web stranicu sa oznakama.

    Ručka čini skup okvira koji dijele prostor prozora na redove i stupce. Zatim morate postaviti visinu/širinu svih redova/kolona, ​​izraženu kao postotak u odnosu na trenutne dimenzije prozora pretraživača, piksela ili kao simbol zvjezdice. Simbol zvjezdice označava da veličina okvira ovisi o dimenzijama ostalih okvira na stranici.

    Deskriptor se koristi za definiranje strukture i sadržaja određenog okvira.

    Evo jednostavnog primjera korištenja okvira:

    Primjer rada sa okvirima

    Rezultat je prikazan na slici 5.

    Slika br. 5. Korištenje okvira

    Korišćenje obrazaca prilikom kreiranja HTML stranice.

    Oznaka uspostavlja formu na web stranici. Obrazac je namijenjen za razmjenu podataka između korisnika i servera. Opseg primjene obrazaca nije ograničen na slanje podataka na server pomoću klijentskih skripti, možete pristupiti bilo kojem elementu obrasca, promijeniti ga i primijeniti po svom nahođenju.

    Jednostavan primjer korištenja obrazaca prilikom kreiranja HTML stranice:

    FORM tag

    Koji programski jezik najčešće koristite?

    Delphi

    C++

    Pišem shadere na GLSL-u

    Rezultat je prikazan na slici 6.

    Slika br. 6. Koristeći formu

    Hiperveza može povezati stranice unutar jedne stranice ili usmjeriti na bilo koju stranicu na Internetu. Kada pravite veze ka tuđim stranicama, uvijek trebate koristiti apsolutnu adresu stranice (http://www.site.com/page.html). Ako kreirate vezu do stranice unutar web stranice, poželjno je koristiti relativni URL (page.html, catalog/page.html).

    Koristeći atribut TARGET, možete učitati stranicu u novom prozoru pretraživača. Ovaj atribut je namijenjen za specificiranje imena prozora. Naziv prozora se koristi u službene svrhe. Da biste otvorili stranicu u novom prozoru, trebate koristiti konstantu _blank.

ZVONO

Ima onih koji čitaju ovu vijest prije vas.
Pretplatite se da primate svježe članke.
Email
Ime
Prezime
Kako želite čitati Zvono?
Nema neželjene pošte