C2 – LPO (despre Date)

22
C2 – LPO (despre Date) CUPRINS Model de date Tipuri de date primitive şi structurate. Variabile Paradigme de programare. Concepte de bază ale programării orientate pe obiect.

description

C2 – LPO (despre Date). CUPRINS Model de date Tipuri de date primitive şi structurate. Variabile Paradigme de programare. Concepte de bază ale programării orientate pe obiect. Obiective. Dupa parcurgerea acestui curs ar trebuie sa puteti: - PowerPoint PPT Presentation

Transcript of C2 – LPO (despre Date)

Page 1: C2 – LPO (despre Date)

C2 – LPO (despre Date)

CUPRINS Model de date Tipuri de date

primitive şi structurate.

Variabile Paradigme de programare. Concepte de bază ale programării

orientate pe obiect.

Page 2: C2 – LPO (despre Date)

Obiective

Dupa parcurgerea acestui curs ar trebuie sa puteti:

descrie conceptele de limbaj de programare, model date, tip de data simplu si structurat, varibila;

descrie paradigma de programare orientata pe proces si pe obiect

caracteristicile programarii orientate pe obiect

metodele de proiectare specifice POO

Page 3: C2 – LPO (despre Date)

Limbaj (de programare) si model de date

Limbaj creat artificial, ce utilizeata un model de date, pentru programarea calculatoarelor

Model de date: formalism matematic pentru descrierea structurilor de date si a operatorilor pentru validarea si manipularea acestora

Java utilizeaza modelul de date strict > exista categorii predefinite, numite tipuri, ce se folosesc pentru modelarea informatiilor de programat.

Tipul defineste reprezentare efectiva in calculator si posibilitatile de utilizare a datelor de un anume tip ce reprezinta informatiile de stocat si prelucrat.

Page 4: C2 – LPO (despre Date)

Tipuri de date Java

Tipuri de date primitive (implementate la nivelul JVM):

6 tipuri de date numerice: întregi: byte, short, int, long reali: float, double

1 tip de dată pentru caractere: char 1 tip de dată bolean: boolean

Tipuri de date structurate (definite de utilizator):

clasele: class intefeţele: interface tablourile

Page 5: C2 – LPO (despre Date)

Variabile - 1 Variabila = nume dat unui grup de locaţii de

memorie ce la un moment dat, stochează o singură valoare.

Orice variabilă trebuie declarată. Forma generala a declaratiei este:

tip nume [= val initiala];int i = 5;

Caraterizată prin: nume, valoare, tip, persistenţă şi vizibilitate.

Optional variabilele pot fi iniţializate în momentul declarării

Page 6: C2 – LPO (despre Date)

Variabile - 2 Numele unei variabile trebuie să înceapă cu o

literă din alfabet sau underscore ( _ ) sau $ Urmatoarele caractere pot contine si cifre, dar

nu spatii sau operatori (+, -, *, / etc.) Nu se poate folosi un cuvânt rezervat (if, for, while,

class …) al limbajului Java ca nume de variabila Lungimea numelui este nelimitatã Este semnificativã scrierea cu litere mari sau mici

Nume corecte

A x1 Masa x2 masa$ideala masa_ideala

Nume gresite

masa#ideala a-1 x*1 for if 1x

Page 7: C2 – LPO (despre Date)

Literali (constante)

Literalii reprezintă valori care nu sunt stocate în variabile.

numerici: intregi (implicit int): reali (implicit double):

nenumerici: bolenei: caracter: sir:

0 18 -23232 (int în baza 10)

2 077 0123 (int în baza 8)

0x0 0xff 0X1FF (int în baza 16)

1L 022L 0x1FFFL(long)

1.0 4.2 0.47 (double)1.23e12 4.12E-9 (double)6.3f 5.62F 4.12E9F (float)

true false

’a’ ’\n’ ’\077’ ’\u005F’

”Salut/n”

Page 8: C2 – LPO (despre Date)

Paradigme … 1 Arhitectura von Neumann, datează din anii

1940, e una din arhitecturile hard. posibile ale calc. numerice care are în centrul ei o unit. Centrala de procesare (CPU in engleza) și o unitate separată de memorare (RAM) în care se stochează atât date cât și instrucțiuni

Hard: RAM + CPU ➔ Soft: Date + Cod = Program (hard-ul determina soft-ul)

Proiectarea programelor pot fi realizată plecând de la Date sau Cod ➔ 2 paradigme (metode de programare):

Page 9: C2 – LPO (despre Date)

Paradigme … 2 programare orientată pe proces:

proiectarea pleacă de la Cod (algoritm); Algoritmi + Structuri de date = Program Complexitate program < 100.000 linii de cod.

programare orientată pe obiect: proiectarea pleacă de la Date ; Obiecte + Mesaje = Program Programare “condusă” de date (accesul la cod

“controlat ” de date)

Page 10: C2 – LPO (despre Date)

Avantaje POO

Simplifică înţelegerea aplicaţiei prin formarea de subgrupuri (organizare clara)

Reduce complexitatea sarcinilor în subgrupuri mai usor de gestionat

Creeaza cod reutilizabil Reduce complexitatea si timpul de dezvoltare Codul se poate extinde (adapta) Subsistemele sunt clar definite Interactiunile sunt clar definite intre subsisteme Implementarea este încapsulata (codul si datele

sunt grupate)

Page 11: C2 – LPO (despre Date)

Conceptul de Obiect

O structură de date, de un tip particular, numită clasă (class);

Contine date (atribute) si cod (comportament) grupate într-un tip de date special;

Ascunde datele dupã un nivel de funcþii numite operatii; Proprietati comune ale obiectelor:

identitate ➔ fiecare obiect este unic în spaţiu şi timp; stare (variabile de instanţă) ➔ definită de valorile de atribute; comportament (metode) ➔ definit prin operatiile ce se pot

efectua asupra atributelor - algoritm + manipulare de date. Nu este un tip primitiv ca int sau boolean ci unul referinþã, stocat pe heap.

Page 12: C2 – LPO (despre Date)

Conceptul de clasa

o descriere (date + cod) a obiectelor; datele definesc starea; codul defineste functionalitatea (operatiile permise sau

actiunile asupra datelor); un sablon pentru alocarea memoriei; tipul de date pe baza caruia se instantiaza (creeaza)

obiectele (new - operator de creare, insantiere)

Class1 ob1 = new Class1();Class1 ob2;ob1.varsta = 10;ob2 = ob1;ob2.afisare()

int a, b;a = 1;b = a;printf(”%i”,a);

Page 13: C2 – LPO (despre Date)

Cont

retrage()depune()

idcont: 123nume: ”Vasile”cont: 1000.0

vasiAcc:Cont

idcontnumecont

idcont: 173nume: ”Nelu”cont: 200.0

neluAcc:Cont

Operatii clasa(Metode)

clasa

Nume clasa

Numeatribut

}

(Variabile de instanta)

Valoareatribut

}

obiecte

Numeclasa

}

Numeobiect

Atribute clasa(Variabile)

Page 14: C2 – LPO (despre Date)

Reguli ale POO

Totul este obiect; Fiecare obiect este o instantiere a unui clase

(tip de date structurat - class). Programul este o colectie de obiecte legate

între ele care comunica. Comunicatia se face prin apeluri de metode; Legãturile dintre obiecte se numesc relatii si

pot fi clasificate în: compunere “has-a”; mostenire “is-a”.

Page 15: C2 – LPO (despre Date)

Caracteristici POO Încapsulare: păstrarea laolaltă a datelor împreună cu

codul care le manipulează; metodele publice pot proteja datele private.

Moştenire: partajarea între obiecte a funcţionalitătii şi a datelor comune => ierarhii de clasificare ce uşurează gestionarea conceptelor.

Polimorfism: permite scrierea interfeţe generice pentru un grup de acţiuni înrudite => se reduce complexitatea;

Mesaje: Obiectele legate între ele comunică prin mesaje; La nivel de obiect, fiecare operaţie are asociat un mesaj; Obiectul, la primirea unui mesaj valid, apelează automat,

operaţia asociată. În Java nu avem mesaje, metodele se apelează direct.

Page 16: C2 – LPO (despre Date)

Declaraţia de clasă

o clasă publică se scrie într-un fişier sursă Java; numele clasei (publice) trebuie sã fie acelasi cu numele

fisierului sursã java: public class MyClass { ... } >>> MyClass.java

Structura unei clase este:class nume_clasa extends nume_parinte {//STARE - ATRIBUTE - variabile de instanta

tip v_1;. . . tip v_n;

//METODE - OPERATIItip metoda_1(lista parametri) {

//variabile localecorp_1

}. . . tip metoda_k(lista parametri) {

corp_k}

} //TERMINARE definitie de clasa

Page 17: C2 – LPO (despre Date)

Rezumat Orice limbaj de programare are la baza un model

(matematic) de date: date + operatori. Java foloseste modelul de date strict in care exista

categorii predefinite numite tipuri Java implementeaza tipuri simple si structurate. Orice

data este stocata intr-o variabila de un anumit tip. Programarea in Java este dictata de date si se numeste

orientat pe obiect. Programarea orientata pe obiect are multiple avantaje

dar si oblica programatorul sa respecte reguli clare. Obiectele se creeaza (cu operatorul new) pe baza

clasele ce sunt tipuri (sabloane) de date definite de utilizator

Page 18: C2 – LPO (despre Date)

Crearea obiectelor, utilizare

obiectele se creează (instantiaza) cu operatorul new:

obRefName = new className(); .new face urmãtoaerele: 1. alocă spaţiu pe heap pentru noul obiect;

2. apelează o metodă specială numită constructor prin care se iniţializează obiectul;

3. întoarce o referinţă la noul obiect. operatorul "punct" conecteazã clasa si obiectele

cu membrii (variabilele de instanþã si metodele): obRefName.v1 sau obRefName.metoda_1().

Page 19: C2 – LPO (despre Date)

Compunerea

obiectele pot conţine referinţe la alte obiecte;

defineste o relatie “has-a” între obiecte.public class Class2 {

Class1 unAtribut; //membru Class2 ...}

Class2 ob2 = new Class2();//instanţiere ob2ob2.unAtribut = new Class1();//instanţiere

ob1

Page 20: C2 – LPO (despre Date)

Moştenirea

evită repetarea scrierii codului; are la bazã partajarea funcþionalitãþiilor comune; dã o interfatã unicã unor comportamente distincte; defineste o relatie “is-a” între clase.

Forma

Dreptunghi Cerc Triunghi

Element mai general

Element mai specific

parintesuperclasaclasa de bazastramos

--------------

copilsubclasadescendent

public class Dreptunghi extends Forma {...

}

Page 21: C2 – LPO (despre Date)

Intrebari

1. Care sunt tipurile simple numerice din Java?

2. Dati exemple de literalii reali din Java. 3. Ce este clasa si cum se creeaza

obiectele din clase?4. Care sunt caracteristicile POO?5. Explicatie conceptele de compunere si

mostenire.

Page 22: C2 – LPO (despre Date)

Bibliografie

1. http://www.oracle.com/technetwork/java/javase/documentation/index.html

2. http://docs.oracle.com/javase/6/docs/

3. Ştefan Tanasă, Cristian Olaru, Ştefan Andrei, Java de la 0 la expert, Polirom, 2003, ISBN: 973-681-201-4.

4. Herber Schild, Java 2 - The Complete Reference, Fourth Edition, Osborne, 2001, ISBN: 0-07-213084-9.

5. Deitel H.M., Deitel P. J., Java - How to programm, Fith Edition, Prentice Hall, 2003, ISBN: 0-13-120236-7.

6. http://www.east.utcluj.ro/mb/mep/antal/downloads.html