170 likes | 364 Vues
Strukture podataka - Uvod. Sini ša Nešković. APSTRAKCIJE. Osnovni problem u programiranju je slo ž enost problema. Ne mo ž e se ceo problem posmatrati i re š avati odjednom. Slo ž enost se re š ava apstrakcijama, kontrolisanim uvo đ enjem detalja.
E N D
Strukture podataka - Uvod Siniša Nešković
APSTRAKCIJE • Osnovni problem u programiranju je složenost problema. • Ne može se ceo problem posmatrati i rešavati odjednom. • Složenost se rešava apstrakcijama, kontrolisanim uvođenjem detalja. • Detalji se zanemaruju na nekom nivou apstrakcije kako bi se broj koncepata sa kojima se projektant suočava sveo na razumnu meru.
APSTRAKCIJE • Apstrakcija na jednom nivou se implementira preko one na nižem. • Dobija se hijerarhija apstrakcija. • Na dnu hijerarhije su apstrakcije (koncepti) podržane od strane implementacionog sredstva (programskog jezika ili računara-hardvera).
APSTRAKCIJE • Specifikacija je opis apstrakcije • Neformalne i formalne specifikacije • Specifikacije je formalna ako je data na jeziku čija je sintaksa i semantika formalno definisana • Implementacija (apstrakcije) je njena materijalizacija na implementacionom sredstvu • Postoje proceduralne apstrakcije i apstrakcije podataka
Proceduralne apstrakcije • Predstavljaju proširenje skupa operacija implementacionog sredstva (jezika ili računara) • Realizuju se preko procedura i funkcija u programskom jeziku • Primer • sin(x), izračunajPlatuRadnika(r)
Proceduralne apstrakcije • Dekompozicijom (top down) se svode na jednostavnije (na nižem nivou apstrakcije) proceduralne apstrakcije sve dok se ne dodje do primitivnih (operacija implementacionog sredstva) • Top-down stepwise refinement postupak razvoja programa • Šta je primitivni nivo zavisi od imlementacionog sredstva • Npr. sin(x) je primitivna operacije u višim programskim jezicima, a složena (apstraktna) u mašinskom jeziku
Proceduralne apstrakcije – Primer procedure izracunajPlatuRadnika(r) begin bruto = izracunajBrutoPrimanja(r); odbici = izracunajOdbitkeRadnika(r); plata = bruto - odbici; end; procedure izracunajBrutoPrimanja(r) begin bruto = brojBodova * vrednostBoda; end; procedure izracunajOdbitkeRadnika(r) begin odbici = sindikalnaClanarina(r) + rataKredita(r); end;
Apstrakcije podataka • Podatak je nosilac informacije. Informacija je protumačeni podatak. • Konkretna vrednost podatka se može tretirati kao predstava nekog objekta iz realnog sistema. • Npr: 5 -> predstavlja temperaturu (Pera, 143/85, 5) -> predstavlja studenta
Apstrakcije podataka – Načini apstrahovanja • Postoji tri načina apstrahovanja: • Klasifikacija, • Agregacija i • Generalizacija
Apstrakcije podataka – Klasifikacija • Svi objekti istih osobina se klasifikuju u jedan tip • npr. Ceo broj (int), Student • Tip podatka se definiše se kao skup objekata (vrednosti) i operacija nad njima. • Int : Z, {+, -, *, } • Student: S, {upisiSemstar, poloziIspit, …} • Tipovi se mogu posmatrati : • i) Prema načinu implementacije • ii) Prema složenosti
Apstrakcije podataka – Klasifikacija • Tipovi prema načinu implementacije: • 1. Fizički tipovi • tipovi podržani od strane računara (hardvera); • npr: int, char • 2. Jezički (virtuelni) tipovi • tipovi podataka koji su podržani od strane implementacionog jezika; • npr: zapis, niz • 3. Apstraktni tipovi podataka (ATP) • proširenje skupa tipova implementacionog sredstva; • npr: student, radnik
Apstrakcije podataka – Klasifikacija • Tipovi prema složenosti: • 1. Prosti (primitivni) tipovi • Vrednost prostog tipa je nedeljiva • npr: int -> 5 • Složeni (strukturni) tipovi • Dobijaju se agregiranjem više drugih tipova • Vrednost je složena, sastoji se od drugih vrednosti; • npr: zapis -> (Pera, 143/85, 5) • Strukturni tipovi se nazivaju i Strukture podataka
Apstrakcije podataka – Agregacija • Dobija se agregiranjem više tipova u jedan apstraktniji složeni tip. • Odnos objekata u strukturi može biti: • - ne postoji uredjenje -> kolekcija i skup • - 1:1 (linearno uredjenje) -> linearna struktura • - 1:M -> stablo • - M:M -> grafovi i mreže • Objekti u strukturi ne moraju biti istog tipa • Većina klasičnih programskih jezika podržava agregaciju
Apstrakcije podataka – Generalizacija i specijalizacija • Uočavanjem zajedničkih osobina i operacija tipovi se apstrahuju u generički apstraktniji tip • Obrnut postupak je specijalizacija • Uzastopnom primenom generalizacije i specijalizacije se dobija hirerarhija tipova • Operacije i osobine se nasleđuju od nadtipa
Apstrakcije podataka – Generalizacija i specijalizacija • Primer • Osoba • Ime, Prezime, Datum rođenja • Radnik – podtip od Osoba • Organizacija, Staž, Plata • Student – podtip od Osoba • Fakultet, godina studija, prosek • Vanredni student– podtip od Student • Iznos uplate semestra
Apstrakcije podataka – Generalizacija i specijalizacija • Operacije koje se izvršavaju nad različitim tipovima se nazivaju polimorfne (generičke) operacije • Npr. UpisiSemestar(s), s: Student ili S: VanredniStudent • Pristup u programiranju koji koristi generalizaciju se naziva objektno orijentisano programiranje, a programski jezici koji podržavaju generalizaciju objektno orijentisani jezici • Generazlizacija se delimično može implementirati i u klasičnim jezicima