Uvod u oo_programiranje

Post on 24-May-2015

184 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Tradicionalni način programiranja je u osnovi proceduralan, zasnovan na funkcionalnoj dekompoziciji korisničkog, a zatim i programskog zahteva. Pri tome, podaci (atributi) koji se obrađuju i operacije nad njima nisu grupisani zajedno u objektima kao što je to slučaj kod OBJEKTNO ORJENTISANOG PROGRAMIRANJA, već su razbacani po programu.Osnovna ideja objektno orjentisanog programiranja je da sve te podatke (atribute ) izvučemo iz navedenih struktura i grupišemo po klasama zajedno sa relevantnim operacijama (funkcijama). Klase zatim struktuiramo hijerarhijski, formirajući hijerarhijsko stablo klasa, vodeći računa da atributi i operacije koji su zajednički za sve klase budu na višim hijerarhijama, kako bi ih niže hijerarhije mogle koristiti preko mehanizma nasleđivanja

Transcript

Osnovi Objektno orijentisanog

programiranja

04/12/23 2

Od c ka c++ i c#

prvi Iskorak od • tradicionalnog, • proceduralnog,

• struktuiranog programiranjaka

• objektno orjentisanom programiranju

04/12/23 3

Osobine jezika C

• Tradicionalni način programiranja je u osnovi proceduralan, zasnovan na funkcionalnoj dekompoziciji korisničkog, a zatim i programskog zahteva.

• Pri tome, podaci (atributi) koji se obrađuju i operacije nad njima nisu grupisani zajedno u objektima kao što je to slučaj kod OBJEKTNO ORJENTISANOG PROGRAMIRANJA, već su razbacani po programu.

04/12/23 4

Tradicionalna, proceduralna, struktuirana organizacija programa razdvaja kod I podatke

main

podacipodaci

podacipodaci

podacipodaci

podacipodaci

04/12/23 5

Osobine jezika C++

• Osnovna ideja objektno orjentisanog programiranja je da sve te podatke (atribute ) izvučemo iz navedenih struktura i grupišemo po klasama zajedno sa relevantnim operacijama (funkcijama). Klase zatim struktuiramo hijerarhijski, formirajući hijerarhijsko stablo klasa, vodeći računa da atributi i operacije koji su zajednički za sve klase budu na višim hijerarhijama, kako bi ih niže hijerarhije mogle koristiti preko mehanizma nasleđivanja

04/12/23 6

Osobine jezika C++

• Tako učaurenim podacima i operacijama definišemo interface prema korisniku tih klasa a takođe i interface između pojedinih klasa u hijerarhiji klasa, sakrivajući kao implementacione detalje sve ono što nije bitno za njihovo korišćenje. Na taj načiin stvaramo softverske komponente ( softverske čipove ) koje možemo nasleđivati novim klasama i na taj način iste ugrađujemo u nove softverske proizvode.

04/12/23 7

Šta je c++

• Programski jezik c++ je jezik sa klasama, ili proširenje popularnog jezika c.

• C++ se zasniva na uvođenju nove korisničke strukture podataka tipa CLASS koja omogućava objedinjavanje podataka (atributa) i operacija (metoda ) nad njima u jednu celinu (paket) pomoću koje deklarišemo objekte.

• Korišćenje takvih objekata u programiranju naziva se OBJEKTNO ORJENTISANO PROGRAMIRANJE

04/12/23 8

Sabiranje dva broja bez korišćenja klasa

– #include<stdio.h>– main ()– {– int a,b;– a=2;– b=4;– printf(“Suma dva broja je %6d\n",a+b);

• }

04/12/23 9

i sa korišćenjem klasa• //Sabiranje dva broja Novi način označavanja komentara

• #include <iosteam.h> // Nova I/O strim biblioteka.

• Class paket // Novi korisnicki izvedeni tip podataka– // Klasa je novi tip za sve objekte koji se grade u njemu– // Klasa je ucaureni paket podataka i operacija koje operisu nad – // podacima.

• {int ImeAtributa; // podatak, atribut klase– // Podrazumeva se da je private sto znaci da se istom moze pristupiti – // preko metoda ove klase

• Public;

04/12/23 10

i sa korišćenjem klasa

• Void suma (int a , int b ) // metoda (funkcija ) klase koja implementirana “in line “ u samoj klasi. Metoda je public sto znaci da se ista moze pozvati bilo gde u programu.

– { int ImeAtributa = a+b; // Punjenje objekta

• Cout << “suma dva broja je :” << ImeAtributa; – // Novi nacin prikaza cout je objekat ugradjene klase klase

iosteam za ekranski prikaz po difoltu, //”<<“ je poziv odgovarajuce operator funkcije za prosledjivane izlaznih podataka na ekran.

}};

04/12/23 11

i sa korišćenjem klasa

• // Glavni program• Void main ()

• { paket objekat_zbir; //deklarisanje objekta

• objekat_zbir.suma(10,20); // Komunikacija sa objektom ostvaruje se posredstvom njegovih metoda

04/12/23 12

Osnovni koncept OOP klasifikacija

(classification)

apstrakcija

(abstraction)

učaurenje

(encapsulation)

nasleđivanje

(inheritance)

polimorfizam

(polymorphism)

04/12/23 13

Klasifikacija

Koren reci klasifikacija je klasa.

Kada obrazujete klasu, vi sistematski uredujete informacije u smislenu celinu. Reč je o klasifikaciji a to svi rade, ne samo programeri

klasifikacija je duboko ukorenjena u nas nacin razmisljanja i komuniciranja, tako da je logicno pokusati da se programi pisu klasifikovanjem razlicitih koncepata svojstvenih nekom problemu i njegovom resenju i zatim modelirati te klase u programskom jeziku

04/12/23 14

Moderni objektno orijentisani programski jezici omogucavaju da se definisu klase, koje kombinuju

ponasanja (metode) i

atribute (podatke).

04/12/23 15

Klase su strukture kojima su pridodata svojstva:

• Privatni pristup Enkapsulacije (sakrivanje, učaurenje) podataka

(atributa) i operacija nad njima

• Metode

Operacije nad atributima klase

• Nasleđivanje

Osobina da klase sa nižih hijerarhijskih nivoa mogu naslediti atribute i metode klasa sa viših hijerarhijskh nivoa)

04/12/23 16

Pokusaj definisanja klasa

Prototipski mehanizam za stvaranje objekta, omogućavajući njihovu klasifikaciju po grupama sa istim osobinama

Model za sve objekte koji se grade,

Agregacija podataka (atributa) obično različitog tipa i operacija, realizovanim funkcijama, nazvanim metodama koje obrađuju te atribute

Kolekcija više objekata koji imaju istu strukturu

Korisnički izveden tip podataka,

04/12/23 17

Apstrakcija

Geometrijski obliciGeometrijski oblici

PravougaonikPravougaonik ElipsaElipsa TrougaoTrougao

04/12/23 18

Apstrakcija

Apstraktni tipovi podataka omogućavaju da napravite klase koje sadrže privatna polja, privatne podatke iprivatne metode koji izvršavaju privatna izračunavanja.

Ta polja i metode ne možete da apstrahujete van klase. Međutim, da bi klasa imala praktičnu vrednost, ona mora da obezbedi neku vrstu „interfejsa“ za komunikaciju. Taj interfejs je skup javnih metoda koje aplikacije mogu da pozivaju. Ti metodi definišu

funkcionalnost ovih aplikacija.

04/12/23 19

Javni metodi mogu da koriste druge privatne metode i da pristupaju privatnim podacima da bi obavili svoj posao ali korisnika to ne zanima dok metodi rade ono što su obećali.

Pošto su mehanizmi koje javni metod koristi privatni, ili sakriveni, programer koji implementira klasu ima potpunu siobodu da obavi izračunavanja i da pristupa podacima kako god mu se čini pogodno.

Štaviše, neka kasnija verzija klase može potpuno da promeni te unutrašnje detalje (može, na primer, da upotrebi neki super novi algoritam koji je 100 puta brži od prvobitnog) ali, dok god javni „interfejs" ostaje isti (nudi se isti skup javnih metoda), sve postojeće aplikacije koje koriste ovu klasu i dalje funkcionišu.

04/12/23 20

Sta je enkapsuliranje?

Enkapsuliranje ima dve znacajne uloge:

Da kombinuje metode i podatke u klasu; drugim recima, da podrzi klasifikaciju.

Da kontrolise dostupnost metoda i podataka; drugim recima, da kontrolise koriscenje klase.

Klasa je programska konstrukcija koja obezbeduje sintaksu i semantiku koje podrzavaju te dve osnovne uloge.

04/12/23 21

Enkapsuliranje, u slici

Pravougaonik

– AtributiDužina

Širina

– MetodeCrtaj ()

Obim ()

Povrsina ()

Pomeri()

04/12/23 22

Enkapsuliranje u reci

klasa po imenu Krug koja sadrzi jedan metod (za izracunavanje povrsine kruga) i jedan podatak (poluprecnik kruga):

• class Krug• {• double Povrsina()• {• return 3.141592 * poluprecnik * poluprefinik;• }• double poluprecnik;• }

04/12/23 23

Kontrolisanje dostupnosti

Drugi kljucni aspekt enkapsuliranja: dostupnost. Za metod ili polje kaze se da je privatno ako je dostupno

samo unutarklase.

Da biste deklarisali da je metod ili polje privatno, napisacetekljucnu rec private ispred njegove deklaracije.

Za metod ili polje kaze se da je javno ako je dostupno i van i unutarklase

Da biste deklarisali da je metod ili polje javno, napisacete kljucnu rec public ispred njegove deklaracije

04/12/23 24

Ponovo klasa Krug. Ovog puta se Povrsina deklarise kao javni metod, a poluprecnik se deklarise kao privatno polje:

class Krug{public double Povrsina(){return 3.141592 * poluprecinik * poluprecinik;}private double poluprecnik; }

04/12/23 25

Objekti su…

Nezavisne programske celine koje sadrže metode (funkcije) i podatke

Različita pojavljivanja iste klase

Promenljive koje se kreiraju iz struktura tipa klase

Individualna realizacija klasa

04/12/23 26

Nasleđivanje,razvrstavanje zajedničkih osobina različitih klasa

Geometrijski obliciGeometrijski oblici

PravougaonikPravougaonik ElipsaElipsa TrougaoTrougao

04/12/23 27

Polimorfizam, različit odgovor na isti metod

GeoOblikcrtaj()

GeoOblikcrtaj()

Elipsacrtaj()

Elipsacrtaj()

Pravougaonikcrtaj()

Pravougaonikcrtaj()

Trougaocrtaj()

Trougaocrtaj()

04/12/23 28

Strukturno, naspram,objektno orijentisanom programiranju

Tendencije strukturnog programiranja

Proces u središteProces u središte

Algoritamskipristup

Algoritamskipristup

Objektno-orijentisane tendencije

Objekat u središteObjekat u središte

Baziran na porukama

Baziran na porukama

Monolitnost Monolitnost Modularnost Modularnost

Upotreba jedanputUpotreba jedanputPonovno korišćenjePonovno korišćenje

Podaci javniPodaci javniPodaci skriveniPodaci skriveni

1111

2222

3333

4444

5555

04/12/23 29

Strukturni pristup u programiranju

CrtajPrav(...){}PomeriPrav(...){}PromeniVelPrav(){}RotirajPrav(...){}

CrtajPrav(...){}PomeriPrav(...){}PromeniVelPrav(){}RotirajPrav(...){}

Funkcije

prav1dužinaširinacentar

prav2dužinaširinacentar

prav3dužinaširinacentar

prav1dužinaširinacentar

prav2dužinaširinacentar

prav3dužinaširinacentar

Podatak

04/12/23 30

Objektno-orijentisani pristup programiranju

dužinadužinaširinaširinacentcentaarr

dužinadužinaširinaširinacentcentaarr

Crtaj

Pomeri

Promeni vel.

Rotiraj

prav1 prav2

dužinadužinaširinaširinacentcentaarr

dužinadužinaširinaširinacentcentaarr

Crtaj

Pomeri

Promeni vel.

Rotiraj

04/12/23 31

Atributi i metodi

• Sluzbenik

- ImeiPrezime: string - Maticnibroj:string- Pol: char- Datumrodjenja: double

+ Uzmimaticnibroj()- Zadajmaticnibroj()+ Uzmipol()- zaDajpol()

PlatniSpisakPlatniSpisak

PlataPlata:: double double

+Izracunajplatu+Izracunajplatu()()

04/12/23 32

Atributi i metodi

U objektu se pored atributa nalaze odgovarajuće metode kojima se vrši zadavanje i vraćanje vrednosti atributa.

• ImeiPrezime• Maticnibroj• zadajmaticnibroj()• Uzmimaticnibroj()

Da bi se efikasno koristili metodi potrebno je znati:• Ime metode• Koji se parametri prosleđuju metodu• Povratni tip metoda

04/12/23 33

Atributi i metodi

• Objekat platni spisak sadrži metod izracunajplatu(), koji računa platu datog službenika.

• Objekat platniSpisak mora imati matični broj datog službenika. Da bi došao do te informacije objekat platniSpisak mora poslati poruku objektu Sluzbenik (metodu Uzmimaticnibroj().

• Objekat Sluzbenik prepoznaje poruku i vraća traženu informaciju

04/12/23 34

Ili, Klase su :

Prototipski mehanizam za stvaranje objekta, omogućavajući njihovu klasifikaciju po grupama sa istim osobinama

Šabloni za pravljenje objekata

Model za sve objekte koji se grade,

Agregacija podataka (atributa) obično različitog tipa i operacija, realizovanim funkcijama, nazvanim metodama koje obrađuju te atribute

Kolekcija više objekata koji imaju istu strukturu

Korisnički izveden tip podataka,

top related