Prikazujem rezultate 1 do 12 od 12

Tema: [Članak] OOD tema

  1. #1

    [Članak]SOOD tema

    Object Oriented Design

    ORIENTED ON C++

    Dakle, zbog kronične upale Slobodnog Vremena u posljednje vrijeme odlučio sam napisati tutorijal za junior programere koji su se privikli na proceduralno, action-based programiranje kako bi ih upoznao sa konceptom objektno-orijentiranog dizajna. Na kraju ovog tutorijala, skromni cilj bi bio priviknuti vas na objektno-orijentirani način razmišljanja te jedan kratak uvod u UML (Unified Modeling Language), grafički jezik koji omogućuje programerima koji se koriste objektno-orijentiranim "stilom" stvaranja softvera da "iscrtaju" svoje umijeće.

    Čim smo započeli, čeka nas terminologija... Gdje kud da pogledamo, vidimo objekte, žene, cure, prostitutke, striptizete, kuće, cure, je l' tako? Ljudi misle na temelju objekata. Tu su objekti koje vidimo svakodnevno, dakle imamo krevet, kompjuter, stol, doručak, ručak, kompjuter... Ali naravno, tu su i stvari koje vidimo rijeđe... NLOi, zgodna ženska na vašem krevetu ili program koji ne javlja errore. Objekte možemo podijeliti na žive i nežive. Sada nećemo ići nabrajati živu i neživu prirodu, nego obratimo pažnju na važan detalj. Svi ti objekti imaju neke svoje atribute i načine ponašanja. Atributi su na primjer veličina, širina i boja, a načini ponašanja, tu imamo eto, ženu koja redovito prigovara, dijete koje plače, šef koji zapovijeda i nastavnica koja je nastrana ili odskakanje lopte, pucanje puške. Ljudi uče o objektima tako da promatraju njihove atribute i načine na koje se ponašaju. Neki objekti imaju slična svojstva poput čovjeka i majmuna, ali neki nemaju, recimo, žena prije braka i žena poslije braka, jelde?

    Objektno-orijentirani dizajn iliti skraćeno OOD je način stvaranja softvera da se program opiše slično onako kako čovjek opisuje objekte iz "stvarnog" života. Svi smo gledali matrix, pa mora biti pod navodnicima, nikad ne znaš... OOD iskorištava povezanost klasa, gdje možda objekti neke određene klase, recimo vozila, imaju iste karakteristike. Objekti poput auta, lokomotive i kamiona imaju mnogo sličnosti pa se mogu poistovjetiti u jednoj generalnoj skupini tj. klasi vozila, ali ipak imaju svoja neka svojstva. To se unutar OODa zove nasljeđivanje, dakle mogućnost da neka nova klasa preuzme svojstva druge klase, te da, naravno, ima svoja jedinstvena. Kao primjer, uzmimo objekt kabrioleta, za njega smo deklarirali posebnu klasu te naslijedili svojstva od klase vozila, koja je općenitija klasa. Nadam se da držite korak uz mene jer ipak mi je ovo prvi tutorijal, ako ne shvatite iz prve, pokušajte ponovno pročitati, a ako i dalje ne shvaćate, javite...

    Kao što vidite, OOD nam omogućava da na intuitivan način riješavamo probleme kod stvaranja softvera kreiranjem klasa koje opisuju različita svojstva objekata te su sa drugim klasama srodne pa se može iskoristiti opcija nasljeđivanja. Objekti, kao i ljudi, komuniciraju preko poruka. Kao primjer, uzmimo da je žena primila naredbu/poruku da prekine zanovijetati jer je "korisniku" dosadila i ona će to izvršiti. No, opet, ovo je primjer jedino izvediv u mašti i programiranju, hehe.

    OOD omata atribute i načine ponašanja u objekte. U objektu su spremljene sve informacije o njegovom načinu ponašanja i atributima. Svi objekti imaju opciju skrivanja informacija. To znači da mogu komunicirati međusobno ali ne mogu znati kako su jedni i drugi implementirani. Vratimo se na dobar primjer automobila. Možemo ga voziti, ali ne moramo znati kako njegov motor i shiftanje brzina npr. radi, ukoliko znamo kako koristiti mjenjač i pritisnuti pedalu za gas. Sakrivanje informacija je prilično bitno i ključno u stvaranju kvalitetnog softvera.

    Nadalje, c++ programeri, kao što znate iz dosadašnjeg teksta, stvaraju svoje klase. Svaka klasa sadrži atribute ali i skupinu funkcija koje spadaju pod gore prozvano "način ponašanja". Atributi svoje ime profesionale izgovaraju "data members", dok funkcije unutar klasa imaju naziv member functions, ili maštovitije prozvano "metode" od strane starijih programera vičnih sa objektno-orijentiranim programskim jezicima poput Jave. Ako niste dosad shvatili, klase su zapravo poput nacrta, dok su objekti prava stvar i deklariraju se kao int, float itd. Još jedan od zanimljivih fičra koje kao što imaju funkcije je mogućnost recikliranja klasa tj. opcija spremanja klasa kao zasebnih fileova te iskorištavanja ih poslije u istom ali možda i u nekom drugom projektu.

    Još jedna od bitnih činjenica kod objektno orijentiranog dizajna program jest analiza tj. planiranje klasa i kako će program izgledati. Naravno, mnogi ovaj dio preskaču jer ne prave NASA-ine sustave ali što kada projekti postanu veći? E, onda ćete morati sjesti i prvo osmisliti što bi program trebao raditi i kako.. to se zove Objektno orijentirana analiza i dizajn (OOAD).

    UML

    UML ili Unified Modeling language je zapravo grafička reprezentacija vašeg objektno-orijentiranog dizajna. No, više kao neka skica nego prava grafika doduše. Fleksibilnost je njegovo srednje ime tj. mogućnost stalnog rastezanja njegovih mogućnosti da se prilagodi programeru. Njegova povijest ide skroz od samih početaka objektno orijentiranog programiranja, dakle '80-ete godine prošlog stoljeća, no njegov pravi razvoj počinje negdje oko sredine 90-etih, točnije 1994. Za više informacija o UMLu potražite na službenoj stranici http://www.uml.orgS, a mi se ovim opraštamo zasad, sljedeći put ćemo krenti na pravo putovanje kroz Objektno orijentirano programiranje u C++u. Farewell!
    ShakeS is powered by Nvidia

  2. #2
    Senior Member Small step for mankind
    Datum registracije
    Sep 2006
    Lokacija
    ZG
    Postova
    2.491
    Svaka cast na trudu, ali oce li to pomoci samo naprednijim programerima ili onima koji su dosli do FOR petlje?
    Ili mozda i jednima i drugima?

  3. #3
    Ovo je više za startne programere koji bi trebali uvidjeti moć OO programiranja...
    ShakeS is powered by Nvidia

  4. #4
    Senior Member Giant leap for forum
    Datum registracije
    Oct 2006
    Lokacija
    Hostile universe
    Postova
    3.468
    = Citat = Izvorno postao Shakes
    Ovo je više za startne programere koji bi trebali uvidjeti moć OO programiranja...
    Malo si proturiječiš. Sva ta "moć OO programiranja" i nije baš za početnike.

  5. #5
    Nikada se nije rano upoznati sa OO-om, a sada kada će ga naučiti, to je drugo pitanje. Inače, nije pod pod početnike spadaju dobro poznavanje c++ovih fičra uključujući barem osnove pointera i arraya...
    ShakeS is powered by Nvidia

  6. #6
    Danke schon Uskoro slijedi nastavak, a zanima me da li bi ikog zanimali C++ tutorijali?
    ShakeS is powered by Nvidia

  7. #7
    Senior Member Small step for mankind
    Datum registracije
    Sep 2006
    Lokacija
    ZG
    Postova
    2.491
    Mene jer sad cu u srednju a tamo se uci C++
    A vec nesto znam o C++ tako da cu lagano pokopcat stvari.

    I dali taj OOD sluzi npr. da "nacrtamo" nesto, kao u LOGO-u?

  8. #8
    Ne, OOD je "dizajniranje" klasa... To je kod, to nije ništa vidljivo kao 3d model ili crtež... To je dio koda koji omogućuje programeru da programira logično... Object-based ili object-oriented... To je samo opcija za bolji i efektivniji kod.
    ShakeS is powered by Nvidia

  9. #9
    Senior Member Small step for mankind
    Datum registracije
    Sep 2006
    Lokacija
    ZG
    Postova
    2.491
    Aha, to je za naprednije...

    Meni netreba da znam kako na napredniji nacin ispisati nesto, imam <cout i sta ce mi vise...
    Istina frend mi je rekao jos jednu naredbu al se ne sjecam.

  10. #10
    Senior Member Master Blaster
    Datum registracije
    Nov 2005
    Lokacija
    Zadar
    Postova
    4.028

    Re:

    = Citat = Izvorno postao RIPtheREAPER
    Aha, to je za naprednije...

    Meni netreba da znam kako na napredniji nacin ispisati nesto, imam <cout i sta ce mi vise...
    Istina frend mi je rekao jos jednu naredbu al se ne sjecam.
    Sry što dižem temu iz mrtvih ali sam osjetio potrebu prokomentirati ovo

    (std:cout je objekt klase ostream. Dakle, samo postojanje couta je omogućeno OOP-om. Kako bi to izgledalo bez OOP-a? Onako kako izgleda printf (neugledno ).
    The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
    <3 <3 <3 <3 <3 <3 <3
    ŠIRI SA MNOM LJUBAV Cherry!

  11. #11
    Senior Member Nuke me please
    Datum registracije
    Jan 2007
    Postova
    283

    Re: [Članak]SOOD tema

    mod si tu i ispricavas se sto dizes temu
    It's time to kick some ass...

  12. #12
    Senior Member Master Blaster
    Datum registracije
    Nov 2005
    Lokacija
    Zadar
    Postova
    4.028

    Re: [Članak]SOOD tema

    pravila vrijede za sve

    natrag na temu
    The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
    <3 <3 <3 <3 <3 <3 <3
    ŠIRI SA MNOM LJUBAV Cherry!

Slične teme

  1. Članak iz astronomije
    By The Patriot in forum Alt-F4
    Odgovora: 6
    Posljednji post: 29-10-2009, 21:09
  2. [Članak] Želite raditi igre?
    By RayDX in forum Programiranje i izrada igara
    Odgovora: 4
    Posljednji post: 18-12-2008, 18:04
  3. [Članak] 3D stuff : Arhiva
    By Burek_fr0m_SPACE in forum Programiranje i izrada igara
    Odgovora: 2
    Posljednji post: 21-03-2007, 16:24

Pravila postanja

  • Ne možeš stvarati nove teme
  • Ne možeš odgovarati na postove
  • Ne možeš slati privitke
  • Ne možeš mijenjati svoje postove
  •