Identifikovanje i postavljanje objekata koji će se koristiti u odgovarajućoj sekvenci za rešenje određenog problema
Uvod
U prethodnoj lekciji, bavili smo se rešavanjem problema koristeći paradigmu objektno orijentisanog programiranja (OOP), što je vrlo slično načinu na koji ljudi rešavaju probleme u stvarnom svetu. Sada ćemo se fokusirati na identifikovanje objekata i određivanje redosleda u kojem će oni sarađivati kako bi rešili određeni problem.
Koraci za identifikovanje i postavljanje objekata:
-
Analiza problema: Prvi korak je pažljiva analiza problema koji treba da rešimo. Ključ je razumeti koji zadatak treba izvršiti i koje su osnovne komponente potrebne za rešenje problema. U stvarnom životu, te komponente često možemo prepoznati kao stvarne objekte, dok ih u OOP-u identifikujemo kao klase.
-
Identifikovanje objekata: Svaki problem može biti razbijen na manje, konkretne entitete ili objekte. Na primer, ako treba napraviti sistem za biblioteku, neki od ključnih objekata bi mogli biti:
- Knjiga
- Član
- Bibliotekar
-
Definisanje uloga objekata: Svaki objekat ima određenu ulogu u rešenju problema. Moramo razumeti šta svaki objekat radi i kako doprinosi konačnom rešenju. Na primer, u biblioteci, član pozajmljuje knjige, dok bibliotekar vodi evidenciju o pozajmljivanju.
-
Utvrđivanje odnosa između objekata: Objekti ne rade izolovano. Oni međusobno komuniciraju. Moramo odrediti kako će svaki objekat "pričati" sa drugim objektima. To se obično ostvaruje putem metoda koje svaki objekat nudi. Na primer:
- Član može pozajmiti knjigu od bibliotekara.
- Bibliotekar dodaje informaciju o pozajmljivanju u sistem.
-
Postavljanje objekata u sekvencu: Da bi sistem radio, potrebno je odrediti pravilan redosled akcija. Ovaj korak osigurava da objekti međusobno pravilno sarađuju. U biblioteci, prvo će član zahtevati knjigu, zatim će bibliotekar proveriti da li je knjiga dostupna, pa će se na kraju knjiga zadužiti.
-
Povezivanje sa kodom: Kada smo identifikovali objekte i definisali njihove uloge i međusobne odnose, možemo ih predstaviti kao klase u kodu. Svaka klasa ima svoje atribute (podatke) i metode (funkcije).
Primer 1: Bankarska transakcija
Razmotrimo jednostavan primer bankarskog sistema. Ključni objekti mogu biti:
- Klijent
- Račun
- Transakcija
U ovom slučaju, proces rešenja problema može izgledati ovako:
- Klijent želi izvršiti transakciju.
- Sistem proverava stanje na računu.
- Transakcija se izvršava ako stanje na računu dozvoljava.
Svaki objekat ima specifične uloge, a pravilnim redosledom akcija sistem funkcioniše bez grešaka.
Primer 2: Online prodavnica
Zamislimo da pravimo online prodavnicu. Koje su glavne stvari koje će korisnici raditi na sajtu? Oni će:
- Pregledati proizvode.
- Dodavati proizvode u korpu.
- Završiti kupovinu i poslati narudžbinu.
Iz ovih aktivnosti možemo identifikovati ključne objekte:
- Korisnik: osoba koja koristi sajt.
- Proizvod: stvar koju korisnik želi da kupi.
- Korpa: mesto gde korisnik stavlja proizvode.
- Narudžbina: konačan rezultat kupovine.
Proizvod |
Korisnik |
|---|---|
|
|
Primer sekvence za kupovinu proizvoda:
- Korisnik se prijavljuje na sajt.
- Korisnik pregleda proizvode i bira jedan proizvod.
- Proizvod se dodaje u korpu.
- Korisnik proverava sadržaj korpe.
- Korisnik obavlja kupovinu i kreira narudžbinu.
- Narudžbina se šalje na obradu.
Ova sekvenca jasno pokazuje kako objekti (korisnik, proizvod, korpa, narudžbina) rade zajedno kako bi omogućili korisniku da obavi kupovinu.
Zadatak 1:
- Identifikovati objekte za problem upravljanja restoranom (npr. Gosti, Narudžbina, Kuvar).
- Definisati uloge tih objekata i kako međusobno komuniciraju.
- Napisati jednostavan pseudokod (sekvencu koraka) za redosled akcija koji rešava problem naručivanja hrane u restoranu.
Zadatak 2:
- Identifikovati objekte za web stranicu koja omogućava korisnicima da iznajmljuju filmove. Koji su ključni objekti (npr. film, korisnik, korpa)?
- Napisati osobine i akcije za svaki objekat.
- Osmisliti sekvencu koraka koje korisnik mora da prati kako bi iznajmio film. U kom redosledu objekti treba da funkcionišu?