Sunteți pe pagina 1din 6

Construirea obiectelor

CLASE

Clase pentru aplica]ii


Execu]ia programului unei aplica]ii începe prin apelul
metodei main() din clasa primar\.
• Dac\ nu exist\ metoda main compilatorul afi[eaz\ o eroare.
• Metodele main trebuie declarate publice
• public static void main (String args[]) { ... }
• Permite apelul cu parametri de la linia de comanda :
public class A {
public static void main (String args[]) {
System.out.println(args[0]);
}
}

Clase pentru miniaplica]ii

Miniaplica]iile constituie extensii ale unei clase deja existente


java.applet.Applet.
Structura clasei unui applet se bazeaz\ pe urm\toarele
metode :
init()
start()
stop()
paint()

init()
• apelat\ numai atunci când applet-ul este înc\rcat pentru
prima dat\ într-un program de vizualizare
• folosit\ pentru ini]ializ\ri [i prelucrarea elementelor din linia
de comand\
• are format fix public void init() { ... }
• declararea sa nu este necesar\, dac\ se face se redefine[te
metoda init() din clasa java.applet.Applet
start()
• apelat\ dup\ metoda init() atunci când miniap. este
înc\rcat\ pentru prima dat\ sau când execu]ia ei a fost
suspendat\ [i trebuie reluat\

1
• are format fix public void start() { ... }
• declararea sa nu este necesar\, dac\ se face se redefine[te
metoda start() din clasa java.applet.Applet

stop()
• apelat\ de fiecare dat\ când o miniap. trebuie oprit\ sau
supendat\
• are format fix public void stop() { ... }
• declararea sa nu este necesar\, dac\ se face se redefine[te
metoda stop() din clasa java.applet.Applet
paint()
• folosit\ pentru desenarea sau redesenarea ecranului
• este apelat\ automat de metoda repaint(), dar poate fi
apelat\ [i explicit
• are format fix public void paint(Graphics g) { ... }
• declararea sa, de[i nu este cerut\ de compilator, este
necesar\ deoarece aici se fac afi[\rile pe ecran (redefine[te
metoda paint() din clasa java.applet.Applet)

Exemplu de applet care folose[te toate cele 4 metode :


import java.awt.Graphics;
public class Counter extends java.applet.Applet {
int counter;
boolean run;

public void init() {


counter = 0;
}

public void start() {


run = true ;
while (run == true) {
counter ++ ;
repaint();
try { Thread.sleep(1000); }
//face o pauza de o secunda
catch(InterruptedException e) {}
}
}

2
Construirea obiectelor

public void stop() {


run = false;
}

public void paint( Graphics g ) {


g.drawString("counter = " + counter, 10, 10);
}
}

Modificatori
ν de tip : public class NumeClasa { ... }
(acces permis si claselor din afara propriului
pachet)
(orice alt modificator genereaz\ o eroare de
compilare)
ν de acces : abstract class NumeClasa { ... }
(creare de clase [ablon - supraclase pentru alte
clase)

Ex:

Variabile folosite de clase


ν variabile de instan]\ : specifice fiec\rei instan]e
ν variabile de clas\ : declarate statice, au aceea[i valoare
pt. toate instan]ele
Instan]e predefinite :
null,
this - desemnarea explicit\ a instan]ei curente a unei
variabile
super - este o referin]\ la superclasa clasei curente

Ex:
class Animal {
static String nume = null;

public void main( String args[]) {


Animal a = new Animal();
if (a.nume == null)
introNume(“Introduceti un nume:”)
}
}

3
void introNume ( String prompt ) {
StringBuffer nume;
char ch = ‘\0’;
nume = new StringBuffer();
System.out.println( prompt );
System.out.flush();
while (ch != ‘\n’) {
try { ch = (char) System.in.read(); }
catch (IOException e) {};
nume.append( ch );
}
this.nume = nume.toString();
}

class Pisica extends Animal {


void introNumePisica {
super.introNume(‘Introduceti numele pisicii:”);
}
}

Modificatorii metodelor

Declararea securit\]ii [i accesibilit\]ii metodelor:

Nivel Acces permis pentru


public toate celelalte clase
private nici o alt\ clas\
protected subclase [i clase din acela[i
pachet
private protected numai subclase
<default> clasele din acela[i pachet

static
• asociat numai metodelor [i variabilelor, nu [i claselor
• precizeaz\ c\ o metod\ poate fi declarat\ o singur\ dat\
(nu poate fi redefinit\ într-o subclas\)
final - precizeaz\ c\ un obiect este stabilit [i nu mai poate fi
schimbat
• la nivelul clasei : nu mai poate avea subclase
final class A {...}
class B extends class A {...} → eroare!
• la nivelul metodei : nu mai poate fi modificat\

4
Construirea obiectelor

class A {
final varFinala = 100 ; → variabila ramane constanta
void metoda() { varFinala = 200; } → eroare!
}
• la nivelul var : este declarat\ constant\
class A {
final void metoda() {...}
}
class B extends A {
void metoda() {...} → eroare!
}

abstract - permite crearea de metode [ablon

Supraînc\rcarea metodelor - overloading


class A {
void metoda(int x) {...}
}
class B extends A {
void metoda(string s) { ... }
}

Folosirea obiectelor
1. Crearea [i distrugerea obiectelor
• spa]iul de memorie nu este pre-alocat
• este dezalocat automat (malloc / free)
• exist\ un echivalent al constructorului
• nu exist\ un echivalent al destructorului
• exist\ metoda finalize care poate fi folosit\ pe post de
destructor

2. Crearea unei instan]e : NEW


String s;
s = new String(10);
n = s.length();
if s.compareTo(“test”) ...
pos = s.indexOf(“test”);

Distrugerea unei instan]e : public void destroy() { ... }

Metoda constructor
Identic\ cu cea din C++;

5
class A {
void A(int arg) { ... }
void A(String s) { ... }
}

Metoda finalize : void finalize()


Este apelat\ automat în momentul când se declan[eaz\
opera]iunea de colectare a gunoiului.

Mo[tenirea
class B extends A { ... }
class Figura {
int nrVarfuri;
void introNrVarfuri() {
try {nrVarfuri = System.in.read();}
catch(IOException e) {}
}
}
class Poligon extends Figura { }

Poligon p = new Poligon();


p.introNrVarfuri();