1 / 18

Programare Orientata Obiect

Programare Orientata Obiect. Curs 6 Conversii de date Clase si metode abstracte. Continutul cursului. Introducere Platforma Java, Clase si Obiecte Modificatori, Constructori Pachete. Incapsularea datelor Mostenirea / Extinderea claselor Conversii de date. Clase si metode abstracte.

Télécharger la présentation

Programare Orientata Obiect

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programare Orientata Obiect Curs6 Conversii de date Clase si metode abstracte Curs 6

  2. Continutul cursului • Introducere • Platforma Java, Clase si Obiecte • Modificatori, Constructori • Pachete. Incapsularea datelor • Mostenirea / Extinderea claselor • Conversii de date. Clase si metode abstracte Curs 6

  3. Curs 6 • Conversii de date • Clasesimetodeabstracte 2.1 Definitii 2.2 Metodeabstracte 2.3Mostenireaclaselorabstracte 2.4 De cesafolosimclaseabstracte? 2.5 Exemplu de implementare (1) 2.6 Exemplu de implementare (2) Curs 6

  4. C6. Conversii de date • 1.Conversii de date • Ierarhia de clase(vezicursul 5) • Tipurile de date (obiectele) aflatemaisus in ierarhiesunt considerate ca fiindmaigenerale, iarcele de josmaispecifice • Conversii: • Conversiaunuisubtip in supertip (poatefiverificata la compilare) • Conversiaunuisupertip in subtip (conversiatrebuiesa fie explicita)

  5. C6. Conversii de date • 1.Conversii de date • Conversieexplicita:numeletipului de data (clasa) trebuiespecificat in momentulconversiei • Exemple: • 1) String str = “test”; • Object obj1 = (Object)str; • Object obj2 = str; • 2) String str1 = “test”; • Object obj = str1; • String str2 = (String)obj; • Double num = (Double)obj; • Dacacompilatorul nu poatesaisideaseamadaca o conversieesteinvalida, atuncivaafisa o eroare in momentulcompilarii • Dacacompilatorul nu poatesaisideaseamadaca o conversieesteposibilasau nu, atunci nu vadaeroare de compilare, darprogramul se vaintrerupe la executiedacaconversia nu se poaterealiza.

  6. C6. Conversii de date %> javac typeTest.java typeTest.java:17 incompatible types found : Person required : Student Student o3 = p[0]; ^ typeTest.java:19 incompatible types found : Person required : Student Student o5 = p[9]; ^ typeTest.java:21: cannot resolve symbol symbol : method getStudentNumber () location: class Person int x = p[0].getStudentNumber(); ^ 3 errors Dupa ce se comenteaza liniile cu erori: %> java typeTest Exception in thread “main” java.lang.ClassCastException: Person at typeTest.main(typeTest.java:20) Exemplu: Student mosteneste Person public class typeTest { static Person[] p = new Person[10]; public static void main (String args[]) { for (int i = 0; i < 10; i++) { if(i<5) p[i] = new Student(); else p[i] = new Person(); } Person o1 = (Person)p[0]; Person o2 = p[0]; Student o3 = p[0]; Student o4 = (Student)p[0]; Student o5 = p[9]; Student o6 = (Student)p[9]; int x = p[0].getStudentNumber(); } }

  7. C6. Conversii de date • 1.Conversii de date • Tipulunuiobiectpoatefiaflat in momentulexecutieiprogramuluifolosindoperatorulinstanceof • if ( objinstanceof String) • { • String str2 = (String)obj; • }

  8. C6. Clase abstracte • 2.1 Definitie • O clasaabstractaeste o clasa care nu poatefiinstantiata • O clasaabstractapoatefidoarmostenita • Declarareauneiclaseabstracte se face astfel: • [public] abstract classClasaAbstracta [extends Superclasa] • { • // Declaratii uzuale • // Declaratii de metode abstracte • } • O clasa abstracta poate contineaceleasi elemente membre ca o clasa obisnuita, la care se adaugadeclaratii de metode abstracte (fara nici o implementare).

  9. C6. Clase abstracte • 2.2 Metodeabstracte • O clasaabstractapoatecontinemetodefaracorp (faraimplementare). Acesteatrebuieimplementate in subclase. • Toatemetodele care nu au corpdintr-o clasaabstractatrebuiedeclarate, la randullor, ca fiindabstracte • Oriceclasa care continecelputin o metodaabstractatrebuiedeclarataabstracta • abstract classClasaAbstracta { • abstract voidmetodaAbstracta(); // Corect • void metoda(); // Eroare • }

  10. Person Employee Student C6. Clase abstracte • 2.3 Mostenireaclaselorabstracte • abstract class Person { • protected String name; • . . . • public abstract String getDescription(); • . . . • } • class Student extends Person { • private String major; • . . . • public String getDescription() { • return “a student major in “ + major; • } • . . . • } • class Employee extends Person { • private float salary; • . . . • public String getDescription() { • return “an employee with a salary of $ “ + salary; • } • . . . • }

  11. C6. Clase abstracte • 2.4 De cesafolosimclaseabstracte? • In proiectarea unei aplicatii este uneorinecesar sa reprezentam concepte abstracte care sa nu poata fi instantiate si care sa foloseasca doar la dezvoltarea ulterioara a altor clase. • Oclasa abstracta poate pune la dispozitia subclaselor sale un model complet pe care trebuie sa-l implementeze, furnizand chiar implementarea unor metode comune tuturor claselor si lasand explicitarea altora fiecarei subclase in parte. • Reprezinta o metoda de constrangere.

  12. C6. Clase abstracte • 2.5 Exemplu de implementare (1) • Descriereaobiectelor grafice intr-o maniera orientata-obiect. • • Obiecte grafice: linii, dreptunghiuri, cercuri, curbe Bezier, etc • • Stari comune: pozitia(originea), dimensiunea, culoarea, etc • • Comportament: mutare, redimensionare, desenare, colorare, etc. • Descrierea obiectelor grafice intr-o maniera orientata-obiect. • Pentru a folosi starile si comportamentele comune declaramo clasa generica GraphicObject care sa fie superclasa pentru celelalte clase. • Metodele abstracte sunt folosite pentru implementarea comportamentului specific fiecarui obiect, cum ar fi desenarea iar cele obisnuite pentru comportamentul comun tuturor, cum ar fi schimbareaoriginii

  13. C6. Clase abstracte • 2.5 Exemplu de implementare (1) • ImplementareaclaseiGraphicObject • abstract classGraphicObject { • // Stari comune • private int x, y; • private Color color = Color.black; • ... • // Metode comune • public voidsetX(int x) { • this.x = x; • } • public voidsetY(int y) { • this.y = y; • } • public voidsetColor(Color color) { • this.color = color; • } • ... • // Metode abstracte • abstract voiddraw(); • ... • }

  14. C6. Clase abstracte • 2.5 Exemplu de implementare (1) • Implementarea claselorpentru obiecte graficearputeafi: • classCircleextendsGraphicObject { • voiddraw() { • // Obligatoriu de implementat • ... • } • } • classRectangleextendsGraphicObject { • voiddraw() { • // Obligatoriu de implementat • ... • } • }

  15. C6. Clase abstracte • 2.6 Exemplu de implementare (2) • Problema: • Studentiisunt de treitipuri (Undergraduate, PhDsauMsC). Fiecareobiectinstantiattrebuiesa fie din unul din celetreitipuri. • Nu trebuiesa se instantiezeniciunobiect din clasaStudent • Solutie: • ClasaStudent se declaraabstracta • ClasaStudentestenecesarapentru a cuprindeaspectelecomunetuturorstudentilor.

  16. Student getLogin() setLogin(String) C6. Clase abstracte • 2.6 Exemplu de implementare (2) • Diagrama de clase: Undergrad PhdStudent MscStudent

  17. C6. Clase abstracte • 2.6 Exemplu de implementare (2) public abstract class Student { protected String login, department, name; public Student() { login = “”; department = “”; name = “”; } public void setLogin(String login) { this.login = new String(login); } public String getLogin() { return new String(login); } } public class PhdStudent extends Student{ private String supervisor; public void setSupervisor(String login) { ...

  18. Continutul cursului • Introducere • Platforma Java, Clase si Obiecte • Modificatori, Constructori • Pachete. Incapsularea datelor • Mostenirea / Extinderea claselor • Conversii de date. Clase abstracte • Interfete Curs 6

More Related