Documente Academic
Documente Profesional
Documente Cultură
ro
Laborator 1
Programare orientat obiect Object Oriented Programming (OOP)
Gndirea n termeni de obiecte
Definiie 1. Un obiect este un element independent al unui program care reprezint
un set de caracteristici corelate i este proiectat pentru a realiza anumite sarcini.
Obiectele sunt denumite i instane.
Definiie 2. O clas este un model (ablon) folosit pentru a crea mai multe obiecte cu
aceleai caracteristici,
Atunci cnd scriei un program OOP, nu definii obiecte individuale, ci clase de
obiecte.
Exemplu.
Clasa Tree (Copac) descrie caracterisiticile tuturor copacilor:
Are frunze i rdcini
Crete
Produce clorofil
Un exemplu de proiectare a unei clase
Clasa CommandButton
Textul de pe buton
Dimensiunile butonului
Aspectul
Modul de comportare
o Are nevoie de un click sau de dou pentru a aciona
o Ingora mouse-ul
o Ce va realiza dup ce va fi apsat?
Definiie 3. O bibliotec de clase este un grup de clase proiectate pentru a fi folosite
mpreun cu alte programe.
Atribute i comportament
O clas n Java este alctuit din: atribute i comportament.
Exerciiu. Realizarea unui clase Jabberwock (dragon imaginat de Lewis Carroll)
Atributele reprezint parametrii individuali care difereniaz o clas de obiecte de
alta.
Atribute Jabberwock
Culoare: portocaliu, pamntiu, galben lmie, galben aprins.
Sex: masculin, feminin, nu e treaba ta.
Pofta: stul, flmnd.
1
smaranda.belciug@inf.ucv.ro
Atributele unei clase de obiecte pot conine informaii despre starea unui obiect
(stare de sntate, preferine de votare).
Variabilele unui atribut = variabile de instan
Definie 4. O variabil de instan este un element de informaie care definete
atributul unui anumit obiect. Clasa obiectului definete ce fel de atribut este i
fiecare instana i pstreaz propria valoare pentru acel atribut. Variabilele de
instan mai sunt denumite i variabilele obiectului.
Un obiect al clasei Jabberwock poate fi j.
j.flamand = false; // lui Jabberwock nu i este foame.
Definiie 5. O variabil de clas este un element de informaie care definete
atributul unui ntregi clase. Variabila se aplic nsei clasei i tuturor instanelor
acesteia, deci este stocat o singur valoare, indiferent de cte obiecte ale clasei au
fost create.
Numrul de obiecte Jabberwock ce triesc ntr-o comunitate. Dac ar fi fost o
variabil de instan fiecare obiect ar fi pstrat o numrtoare diferit, ceea ce nu
este corect.
Comportamentul unei clase de obiecte
Comportamentul este modul n care clasele de obiecte pot face ceva cu ele nsele
sau cu alte obiecte. Comportamentul unei clase de obiecte este determinat cu
ajutorul metodelor.
Definiie 6. Metodele sunt grupuri de instrucini dintr-o clas de obiecte, care
acioneaz asupra acesteia sau asupra altor clase sau obiecte.
Obiectele comunic unele cu altele folosind metode.
Exact ca i n cazul variabilelor avem metode de instan i metode de clas.
Crearea unei clase
Definiia obinuit de clas.
class Jabberwock {
}
Pentru a crea o clasa mai sofisticat introducei trei variabile de instan imediat
dup rndul class Jabberwock {
String culoare;
smaranda.belciug@inf.ucv.ro
String sex;
boolean flamand;
Clasa String este folosit pentru a pstrarea textului i pentru diferite funcii de
manipulare a textului.
O metod care s-i defineasc comportamentul.
void hranescJabberwock(){
if (flamand == true) {
System.out.println(Bun un taran!);
flamand = false;
} else
System.out.println(nu, multumesc am mancat deja!);
}
// comentariu va urma
O alta metod de afiare a atributelor.
void afisareAtribute(){
System.out.println(acesta este un jabberwock + sex + + culoare + +
.);
if (flamand == true)
System.out.println(Jabberwock-ul este flamand);
else
System.out.println(Jabberwock-ul este satul);
}
Dac rulam acum programul o s gsim urmtoarea eroare:
In class Jabberwock: void main (String argv[]) is not defined
Vom crea metoda main().
public static void main (String argumente[]){
Jabberwock j = new Jabberwock();
j.culoare = portocaliu;
j.sex = mascul;
j.flamand = true;
System.out.println(apelez afisareAtribute..);
j.afisezAtribute();
System.out.println(Hranesc Jabberwock-ul );
j.hranescJabberwock();
System.out.println(apelez afisareAtribute..);
j.afisezAtribute();
System.out.println(Hranesc Jabberwock-ul );
j.hranescJabberwock();
smaranda.belciug@inf.ucv.ro
}
Organizarea claselor i comportamentul acestora
Programarea orientat obiect n Java se bazeaz pe trei concepte: motenirea,
interfeele i pachetele.
Motenirea
Definiie 7. Motenirea este un mecanism care permite unei clase s moteneasc
comportamentul i atributele unei alte clase.
Prin motenire o clas dobndete imediat tot comportamentul unei clase existente.
Din acest motiv, noua clas poate fi creat prin simpla specificare a diferenelor fat
de clasa existent.
Definiie 8. O clas care motenete alt clas este denumit subclas, iar clasa care
i ofer motenirea se numete superclas.
O clas poate avea o singura superclas, ns poate avea unu numr nelimitat de
subclase.
Definiie 9. Subclasarea reprezint crearea unei noi clase, care motenete o clas
existent. Singurul lucru care trebuie fcut n subclas este definirea diferenelor n
comportament i atribute fa de superclas.
n cazul n care apelm o metod a unui anumit obiect, interpretorul Java verific mai
nti clasa obiectului, pentru a gsi acea metod. Dac metoda nu este gsit,
interpretorul o caut n superclasa clasei i aa mai departe pn este gsit definiia
metodei.
n cazul n care o subclas definete o metod cu acelai nume, tip de rezultat i
argumente care sunt definite i ntr-o superclasa, aceast procedur se numete
anulare prin suprascriere sau suprascriere (overridding).
Motenirea simpl i multipl
Forma de motenire folosit n Java este denumit motenire simpl (single
inheritance) deoarece fiecare clas Java poate avea o singur superclas (cu toate c
orice superclas poate avea mai multe subclase).
n alte limbaje pot fi i moteniri multiple (C++).
Interfee
Definiie 10. O interfa (Interface) este o colecie de metode care indic faptul c o
clas are un anumit comportament suplimentar fa de ceea ce motenete de la
superclasele sale.
smaranda.belciug@inf.ucv.ro
Pachete
Pachetele (packages) n Java reprezint o modalitate de a grupa clasele i interfee
nrudite. Pachetele permit grupurilor de clase s fie disponibile doar dac este nevoie
de ele, eliminnd potenialele conflicte ntre numele claselor din diferite grupuri de
clase.
Bibliotecile de clase Java sunt coninute ntr-un pachet denumit java.
n mod prestabilit, clasele dumneavoastr Java au acces doar la clasele
java.lang. Pentru restul trebuie explicitate numele lor sau importat fiierul
surs.
Pentru a v referi la o clas din cadrul unui pachet, trebuie s introducei
pachetele care conin clasa, urmate de numele clasei, elementele fiind
separate prin puncte (.).
Crearea unei subclase
Vom crea un applet. Crearea unui applet Java este diferit de crearea aplicaiilor.
Applet-urile Java ruleaz ca parte a unei pagini Web.
Toate applet-urile reprezint subclase ale clasei Applet (care face parte din pachetul
java.applet).
public class Palindrom extends java.applet.Applet{
//va urma
}
extends - modul de declarare a faptului ca o clas este subclasa altei clase
public - indica faptul c Palindrom este o clasa accesibil altor clase care ar putea
avea nevoie s o foloseasc
Toate applet-urile trebuie declarate public.
Font f = new Font (TimesRoman, Font.BOLD, 36);
new creeaz un nou obiect de tip Font
public void paint (Graphics ecran){
ecran.setFont(f);
ecran.setColor(Color.red);
ecran.drawString(Go hang a salami, Im a lasgna dog., 5, 40);
}
Metoda paint e declara public pentru a o putea suprascrie pe metoda paint din
superclas. O metod public nu poate fi suprascris dect de o metod public,
altfel programul nu se va compila cu succes.
Clasa Graphics se ocup cu reprezentarea fonturilor, culorilor sau desenatului.
5 i 40 reprezint coordonatele unde va fi scris textul respectiv.
Daca ncercai compilarea textului vei avea eroarea:
smaranda.belciug@inf.ucv.ro
Palindrom.java:2: Class Font not found in type declaration
import java.awt.Graphics;
import java.awt.Font;
import java.awt.Color;
import java.awt.*;
ABC-ul Java
Instruciuni i expresii
Definiie 11. O instruciune (statement) este o comand simpl, scris ntr-un limbaj
de programare i care determin o aciune.
int varsta = 30;
import java.awt.dnd;
System.out.println(Nu esti seful meu!);
jucator.scor = 415467;
Unele instruciuni produc o valoare cum ar fi cazul cnd se adun dou numere.
Aceste instruciuni se numesc expresii.
Definiie 12. O expresie (expression) este o instruciune care are ca rezultat
producerea unei valori. Valoarea poate fi pstrat pentru o folosire ulterioar n
program, poate fi folosit imediat ntr-o alt instruciune sau poate fi ignorat.
Valoarea produs de o instruciune este numite valoare de retur (return value).
Un grup de instruciuni grupate ntre acolade se numete bloc sau bloc de
instruciuni.
Variabile i tipuri de date
Definiie 12. Variabilele reprezint un loc unde poate fi pstrat informaia ntr-un
program aflat n execuie. Valoarea poate fi modificat oricnd n program de aici i
numele.
Variabile de instan sunt folosite pentru a defini atributele unui obiect
Variabile de clas definesc atributele unei ntregi clase de obiecte i se
aplic tuturor instanelor acesteia
smaranda.belciug@inf.ucv.ro
Atenie! Java nu are variabile globale (care pot fi folosite n orice parte a unui
program). Variabilele de clas i de instan sunt folosite pentru a comunica
informaii despre un obiect sau un altul i pot nlocui nevoia de variabile globale.
Momentan vom studia variabilele locale.
Crearea variabilelor
int scorMaxim;
String numeUtilizator;
boolean jocTerminat;
String strada, oras, judet;
int codPostal = 434121;
greutate = 65;
Definiiile variabilelor de instan i de clas primesc o valoare iniial n funcie de
tipul informaiei pe care o stocheaz:
Varibile numerice: 0;
Caracterele: \0;
Variabile booleene: false;
Obiecte: null;
Tipuri de variabile
Tipuri de date
Tipuri de ntregi
byte 8 bii ntre -128 i 127
short 16 bii ntre -32768 i 32767
int 32 bii ntre -2147483648 i 2147483647
long 64 bii ntre -9223372036854775808 i 9223372036854775807
Numere n virgul mobil
float ntre 1,4E-45 i 3,4E+38
double ntre 4,9E-324 i 1,7E+308
char caractere individuale (Atenie exist i clasa Char)
boolean true i false (Atenie exist i clasa Boolean)
7
smaranda.belciug@inf.ucv.ro
Tipuri de clase
Jabberwock primulMonstru;
Culoare par;
Referirea la o superclas ca tip de variabil este folositoare atunci cnd variabila
poate fi una dintre mai multe subclase diferite. De exemplu, s considerm o
superclas Fruct, i trei subclase Mar, Par i Capsuna. Dac vei crea o variabil Fruct
denumit fructulPreferat, ea va putea fi folosit pentru a referi un obiect Mar, Par
sau Capsuna.
Atenie! Java nu are echivalent pentru typedef din C sau C++. Pentru a declara noi
tipuri n Java, se declar o nou clas, iar variabilele pot folosi aceast clas drept tip.
Comentarii
Definiie 13. Comentariile reprezint informaii introduse ntr-un program doar n
ajutorul persoanelor care ncearc s-i dea seama ce anume se ntmpl n
program.
// i /* . */
Literale
Definiie 14. Literalele sunt numerele, textul i alte informaii care reprezint direct
o valoare.
Exemple.
\n linie nou (new line)
\t tabulator (tab)
\b stergere napoi un caracter (backspace)
\r revenire la capat de rand (carriage return)
\f salt la pagina nou (formfeed)
\\ - semnul backslash (\)
\ ghilimele simple
\ ghilimele duble
\d octal
\xd hexazecimal
\ud caracter unicode
Expresii i operatori
O expresie reprezint o instruciune care produce o valoare.
Definiie 15. Operatorii reprezint simboluri speciale folosite n funcii matematice,
n unele tipuri de instruciuni de atribuire sau n comparaii logice.
smaranda.belciug@inf.ucv.ro
class AmoebaMath {
public static
int x =
short y
float a
smaranda.belciug@inf.ucv.ro
x = x + 2; // x = 7, nti se calculeaza x + 2, apoi se atribuie valoarea lui x
x += y
x -= y
x *=y
x /= y
x=x+y
x=xy
x=x*y
x=x/y
Incrementare i decrementare
Definiie 16. Incrementarea unei variabile nseamn a aduga 1 la valoarea sa, iar
decrementarea unei variabile nseamn a scdea 1 din valoarea sa.
++ incrementare
-- decrementare
int x, y,z;
x = 42;
y = x++; // y ia valoarea lui x (42) si apoi x este incrementat la 43
z = ++x; // x este incrementat la 44 si apoi z ia valoarea lui x
Comparaii
== Egal
!= diferit
< mai mic dect
> mai mare dect
< = mai mic egal cu
>= mai mare egal cu
boolean modern;
int varsta = 31;
modern = varsta < 25;
Operatori logici
& i && - AND
| i || - OR
^ - XOR
! NOT
Precedena operatorilor
10
smaranda.belciug@inf.ucv.ro
Expresii de atribuire
Dac dou operaii au aceeai preceden, cea aflat mai n stnga n cadrul
expresiei va fi calculat nainte de cea din dreapta.
Tabelul de mai jos conine operatori Java si precedena lor. Cei de la nceput sunt
evaluai primii.
. [] ()
++ -- ! ~ instanceof
new
*/%
+<< >> >>>
< > <= >=
== !=
&
^
|
&&
||
?:
= += -= *= /= %= ^=
&= |= <<= >>= >>>=
11