Sunteți pe pagina 1din 5

O Clasa reprezint un set de obiecte ce au aceeai structura si comportament.

Clasa determina structura obiectelor pe baza variabilelor specificate, care sunt


coninute in fiecare instan/obiect al clasei.
Clasa determina comportamentul obiectelor pe baza metodelor de instan, care
exprima comportamentul acelor obiecte.
Structura e determinata de VARIABILE.
Comportamentul e determinat de METODE.
Ideea conceptului de OOP este de a permite claselor posibilitatea de a exprima
similariti intre obiecte ce mprtesc in comun anumite structuri si
comportamente
Aceste similariti pot fi exprimate utiliznd MOSTENIREA sau POLIMORFISMUL.
5.5.1 Extinderea claselor deja existente
Exista deja o clasa care poate fi adaptata cu cteva modificri sau adugiri. Acest
lucru e mult mai comun decat creearea unor grupuri de clase sau subclase de la
O.
Clasa existenta poate fi extinsa pentru a face o subclasa.
Public class <subclass name> extends <existing class name> {
//
}
Protected se foloseste atunci cand vine vorba de subclase.
Atunci cand acest modificator de acces este aplicat la o metoda sau o variabila
membru a unei clase , acel membru poate fi utilizat intr-o subclasa, direct sau
indirect, al clasei in care acesta e definit, dar nu poate fi utilizat in non-subclase.
Exista o exceptie: un membru protejat poate fi de asemenea accesat de catre
orice clasa din acelasi package
Termenul de mosternire se refera la faptul o clasa poate mosteni o parte sau
toata structura si comportamentul ei din alta clasa.
Clasa care face mostenirea s.n SUBCLASA a clasei pe care o mosteneste.
A este superclasa a lui B
B este subclasa a lui A
B o mosteneste pe A
Class B extends A {
//
//
}
O variabila care poate retine o referin ctre un obiect din clasa A, poate retine o
referin si ctre un obiect dintr-o subclasa (Clasa B) a acesteia.

De exemplu, un obiect de tipul Car poate fi atribuit unei variabile din clasa
Vehicle.
Deci variabila ce retine o referin ctre un obiect din clasa Car (Clasa A), poate
retine si o referin ctre un obiect din clasa Vehicle (Clasa B).
myCar este o variabila de tipul Char (Caracter) ce este declarata si iniializat
prin expresia:

Car myCar = new Car ();

Car clasa, myCar variabila, Car obiectul;

Vehicle myVehicle = myCar


Vehicle myVehicle = new Car()

Un obiect din clasa Car, Truck sau Motorcycle este automat un obiect din clasa
Car
Variabila myVehicle tine o referin care un obiect de tipul Car, care automat este
si un obiect al clasei Car. Obiectul tine minte ca de fapt este unul de tipul Car si
nu doar un Vehicle.
Pentru a verifica daca un obiect aparine unei clase se folosete expresia:

if (myVehicle instanceof Car)

Care determina faptul ca obiectul refereniat prin variabila myVehicle este de fapt
unul din clasa Car.

myCar = myVehicle

myCar = (Car)myVehicle spui calculatorului ca myVehicle este cu


sigurana un obiect din clasa Car

((Car)myVehicle).number of Doors
System.out.println (Vehicle Data:);
System.out.println (Registration number: +myVehicle.registrationNumber);
If (myVehicle instance of Car)
System.out.println (Type of vehicle: Car);
Car c;
c = (Car)myVehicle;
System.out.println (Nr. of doors: + c.numberofDoors.)
}
ClassCastException - atunci cand referirea se face la un obiect din alta
clasa (explicatie aproximativa)
Thrown to indicate that the code has attempted to cast an object to a
subclass of which it is not an instance.

It's really pretty simple: if you are trying to typecast an object of class A
into an object of class B, and they aren't compatible, you get a class cast
exception.
Let's think of a collection of classes.
class A {...}
class B extends A {...}
class C extends A {...}
You can cast any of these things to Object, because all Java classes inherit
from Object.
You can cast either B or C to A, because they're both "kinds of" A
You can cast a reference to an A object to B only if the real object is a B.
You can't cast a B to a C even though they're both A's.

Polymorphism

Rectangle
Oval
RoundRect
Superclass: Shape represent instance variables(color, position, size) and
instance variables (for changing color position, size).
Class Shape{
Color color; (culoarea formei, clasa Color este definita in pachetul
java.awt)
void setColor(Color newColor) {
color = new Color; - schimba valoarea variabilei de instanta
redraw(); - redeseneaza forma, pt a aparea in culoarea
schimbata
}
void redraw() {
// method for drawing shape
// more instance variables and methods
}
}

Class Rectangle extends Shape {


void redraw () {
// - commands for drawing a rectangle
}
// alte metode si variabile
}
Class Oval extends Shape {
void redraw () {
// - commands for drawing an oval
}
}
Daca oneShape este o variabila de tip Shape aceasta poate face referire
inclusiv la un obiect de tipul Rectangle, Oval sau RoundRect.

oneShape.redraw
valoarea variabilei se modifica de fiecare data cand program este
executat , putandu-sse referici inclusiv la obiecte de tipuri diferite in
acelasi timp.
De fiecare data cnd metoda redraw este apelata pentru un tip de obiect
este apelata metoda corespunztoare obiectului respectiv.
O metoda este polimorfic daca aciunea efectuata de ctre aceasta
depinde de tipul actual de obiect pentru care metoda este aplicata.
Daca valoarea variabilei se modific pe msura ce programul este executat
este foarte posibil ca expresia oneShape.redraw(), sa apeleze metode
diferite si sa deseneze forme diferite de fiecare data cnd este executata.
-> Metoda redraw() este POLIMORFICA.
Polimorfismul nseamn ca diferitele obiecte pot rspunde la acelai
mesaj in moduri diferite.
BeveledRect apartine clasei Shape.
Si are propria metoda redraw().
Asadar codul scris anterior, precum si expresia oneShape.redraw(); poate
acum sa deseneze rectangles dupa noua forma dorita, chiar daca aceasta
clasa nu exista la momentul in care aceasta expresie a fost scrisa.
In aceasta expresie, mesajul redraw este transmis obiectului oneShape
Java poate fi folosita pentru a scrie programe GUI pornind de la applet-uri
ce ruleaza pe pagini web si pana la aplicatii stand-alone.
Programele GUI sunt driven-event. Acest lucru inseamna ca in momentul
in care user-ul apasa pe butoane programul trebuie sa raspunda la aceste
evenimente pe masura ce acestea apar.
Evenimentele sunt obiecte. Culorile si fonturile sunt obiecte.

Componente GUI cum ar fi butoane sau meniuri sunt obiecte.


Evenimentele sunt manageriate de care metode de instanta, continute in
obiecte.
Un Program GUI are o subrutine main(), care in general creeaza mai multe
componente GUI si le afiseaza pe ecran.
O data ce componentele GUI au fost create, ele urmaresc programarea lor,
programare ce le spune cum sa se deseneze pe sine pe ecran si cum sa
raspunda la evenimente cum ar fi un click din partea user-ului.
JOptionPane.showMessageDialog ( null, Hello World );
showMessageDialog static method inclusa in clasa JOptionPane
codul sursa importa clasa javax.swing.JOptionPane pentru a face posibila
referirea la clasa JOptionPane utilizand in mod simplu numele ei.
Fiecare component al interfetei este reprezentat de catre un obiect in
program.
Un tip fundamental de component este fereastra.(window).
Acestea au mai multe tipuri de comportament: se pot deschide, inchide,
minimiza, maximiza, dar cel mai important pot contine alte componente
GUI cum ar fi butoanele sau meniurile.
Clasa JFrame este folosita cel mai de pt reprezentarea ferestrelor, aceasta
fiind inclusa in pachetul javax.swing.