P. 1
Cristian Frasinaru-Curs Practic de Java

Cristian Frasinaru-Curs Practic de Java

|Views: 2|Likes:
Published by Andreea gin
curs
curs

More info:

Published by: Andreea gin on May 23, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/17/2013

pdf

text

original

In Java, ca ˆın orice limbaj de programare orientat-obiect, crearea obiectelor

se realizeaz˘a prin instant¸ierea unei clase ¸si implic˘a urm˘atoarele lucruri:

• Declararea

Presupune specificarea tipului acelui obiect, cu alte cuvinte specificarea

clasei acestuia (vom vedea c˘a tipul unui obiect poate fi ¸si o interfat¸˘a).

NumeClasa numeObiect;

• Instant¸ierea

Se realizeaz˘a prin intermediul operatorului new ¸si are ca efect crearea

efectiv˘a a obiectului cu alocarea spat¸iului de memorie corespunz˘ator.

numeObiect = new NumeClasa();

• Init¸ializarea

Se realizeaz˘a prin intermediul constructorilor clasei respective. Init¸ializarea

este de fapt parte integrant˘a a procesului de instant¸iere, ˆın sensul c˘a

imediat dup˘a alocarea memoriei ca efect al operatorului new este apelat

constructorul specificat. Parantezele rotunde de dup˘a numele clasei in-

dic˘a faptul c˘a acolo este de fapt un apel la unul din constructorii clasei

¸si nu simpla specificare a numelui clasei.

Mai general, instant¸ierea ¸si init¸ializarea apar sub forma:

35

36

CAPITOLUL 2. OBIECTE S¸I CLASE

numeObiect = new NumeClasa([argumente constructor]);

S˘a consider˘am urm˘atorul exemplu, ˆın care declar˘am ¸si instant¸iem dou˘a

obiecte din clasa Rectangle, clas˘a ce descrie suprafet¸e grafice rectangulare,

definite de coordonatele colt¸ului stˆanga sus (originea) ¸si l˘at¸imea, respectiv

ˆın˘alt¸imea.

Rectangle r1, r2;

r1 = new Rectangle();

r2 = new Rectangle(0, 0, 100, 200);

In primul caz Rectangle() este un apel c˘atre constructorul clasei Rectangle

care este responsabil cu init¸ializarea obiectului cu valorile implicite. Dup˘a

cum observ˘amˆın al doilea caz, init¸ializarea se poate face ¸si cu anumit¸i para-

metri, cu condit¸ia s˘a existe un constructor al clasei respective care s˘a accepte

parametrii respectivi.

Fiecare clas˘a are un set de constructori care se ocup˘a cu init¸ializare

obiectelor nou create. De exemplu, clasa Rectangle are urm˘atorii construc-

tori:

public Rectangle()

public Rectangle(int latime, int inaltime)

public Rectangle(int x, int y, int latime, int inaltime)

public Rectangle(Point origine)

public Rectangle(Point origine, int latime, int inaltime)

public Rectangle(Point origine, Dimension dimensiune)

Declararea, instant¸ierea ¸si init¸ializarea obiectului pot ap˘area pe aceea¸si

linie (cazul cel mai uzual):

Rectangle patrat = new Rectangle(0, 0, 100, 100);

Obiecte anonime

Este posibil˘a ¸si crearea unor obiecte anonime care servesc doar pentru

init¸ializarea altor obiecte, cazˆın care etapa de declarare a referint¸ei obiectului

nu mai este prezent˘a:

Rectangle patrat = new Rectangle(new Point(0,0),

new Dimension(100, 100));

2.1. CICLUL DE VIAT¸ ˘

A AL UNUI OBIECT

37

Spat¸iul de memorie nu este pre-alocat

Declararea unui obiect nu implic˘a sub nici o form˘a alocarea de spat¸iu

de memorie pentru acel obiect. Alocarea memoriei se face doar la apelul

operatorului new.

Rectangle patrat;

patrat.x = 10;

//Eroare - lipseste instantierea

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->