Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... ·...

31
Ingineria Sistemelor de Programare Bazele OOP [email protected]

Transcript of Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... ·...

Page 1: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Ingineria Sistemelor de Programare

Bazele OOP

[email protected]

Page 2: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Cuprins

• Concepte OOP

• Clasa si obiect

• Variabile de instanta

• Metode de instanta

• Metode si variabile statice

• Constructori

Page 3: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Programarea Orientata pe Obiecte

http://www.c-sharpcorner.com/UploadFile/8a67c0/oops-vs-procedural-programming/

Page 4: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Conceptul de obiect

• Obiect (eng. Object) = O entitatecaracterizata printr-o stare si un comportament.

Page 5: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Conceptul de clasa

• Clasa (eng. Class)= un sablon pe baza caruia se construiesc obiecte

Page 6: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Structura unei clase Java

• Nume

• Atribute

• Constructori

• Metode

public class Bicycle {

public int speed; //atribut

public Bicycle(int startSpeed) { //constructorspeed = startSpeed;

}

public void applyBrake(int decrement) {//metoda

speed -= decrement;}

public void speedUp(int increment) {//metoda

speed += increment;}

}

Page 7: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Principiile programarii OOP

• Cele 4 principia ce stau la baza OOP

– Abstractizarea

– Incapsularea

– Polimorfismul

– Mostenirea

Page 8: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

ATRIBUTE DE INSTANTA

Page 9: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Motivatie

• Obiectele stocheaza date. Acestea se mainumesc: campuri, atribute sau variabile de instanta

• Sintaxa:

modifiers class MyClass{

modifiers SomeType filed1;

}

• Atributele stocheaza starea obiectului

Page 10: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Exemplu

• Robot

– Atributele

• int x

• int y

• String name

Page 11: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Conventii Java

• Numele claselor incep cu litera mare

• Numele atributelor incep cu litera mica

Page 12: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Obiectele si referintele

• Dupa ce o clasa a fost definita pot fi declaratevariabile (referinte) de acel tip

• Variabile de tip obiect au valoarea null daca nu refera catre nici un obiect

• Se utilizeaza operatorul new pentru a construiun obiect:

ClassName var1 = new ClassName();

Page 13: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Accesarea atributelor de instanta

• Se utilizeaza ‘.’ intre numele referintei (obiectului) si numele variabileivariableName.fieldName

• Exemplu:Robot r1 = new Robot();r1.x = 10;r1.y = 12;int d = r1.x – r1.y;

• Exceptie:– variableName poate lipsi daca suntem in interiorul

unei metode de instanta din cadrul clasei

Page 14: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Aplicarea principiilor OOP

• Principiul incapsularii

– Atributele de instanta ale unei clase sunt declarateprivate

– Nu sunt accesibile din exterior de catre alte clase

Page 15: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

METODE DE INSTANTA

Page 16: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Motivatie

Definitie: Functiile definite in cadrul unei clasese numesc metode (metode de instanta)

• Sintaxa:

modifiers class MyClass{

modifiers ReturnType myMethod(…){…}

}

• Implementeaza comportamentul obiectului

Page 17: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Exemplu

• Robot

– Atributele: x,y,speed

– Metodele: move, printLocation, setLocation

Page 18: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Definirea metodei

methodModifiers returnTypemethodName (parameter list) [throws exceptionList ]

{declarations and statements

return something;}

Exemplu:public void move(){

x = x + speed;y = y + speed;

}

Page 19: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Supraincarcarea metodelor

• Eng. Overloading

• Definirea in cadrul unei clase a mai multormetode cu numar sau tip diferit de argumente

Page 20: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Conceptul de getter si setter

• Metodele

– get…() returneaza valorea unui variabile membruprivate

– set…(…) modifica valoarea unei variabile membruprivate

- Eficienta ?

Page 21: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Accesarea metodelor interne siexterne

• Accesarea metodelor din aceiasi clasa

• Accesarea metodelor din alte clase

Page 22: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Visibilitatea Metodelor si Variabilelor

• private – accesibile doar in interior

• public – accesibil de oriunde

• protected – accesibil in interior si in claselederivate

• package– accesibil din pachetul curent

Page 23: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

VARIABILE SI METODICE STATICE

Page 24: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Variabile si metode statice

• metoda de clasa / variabila de clasa• Accesibile prin numele clasei• Echivalentul metodelor si variabilelor globale din

alte limbaje• Variabilele statice:

– O singura locatie accesibila din toate obiectele prinnumele clasei

• Exemplu utilizare: clasa Math• Exemplu utilizare: sablonul de proiectare

Singelton

Page 25: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

CONSTRUCTORII

Page 26: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Motivatie

• Constructurii sunt metode speciale ce sunt apelateautomat atunci cand obiectele sunt create

• Sintaxa:public class MyClass{

public MyClass(…){…}}

• Numele identic cu numele clasei• Nu au tip de return• Sunt utilizati pentru initializarea starii obiectului sau

pentru a efectua anumite operatii specifice la initializarea obiectului

Page 27: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Constructorul implicit

• Este constructorul fara argumente

• Este automat adaugat de compilator daca nu este definit de programator

Page 28: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Exemplu

• Exemplu constructor implicit pentru clasaRobot

Page 29: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Constructori cu argumente

• O clasa poate avea mai multi constructori

• Difera prin numarul si tipul argumentelor

• Cuvantul cheie “this” pentru a apela atributeledin cadrul instantei

• Se utilizeaza “this” pentru a forta apelare unuiconstructor din alt constructor

Page 30: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

Exemplu

• Exemplu constructori cu argumente si this

Page 31: Ingineria Sistemelor de Programarecontrol.aut.utcluj.ro/hmihai/lib/exe/fetch.php?media=isp:... · 2019-03-26 · Programarea Orientata pe Obiecte ... •Variabile de tip obiect au

SFARSIT