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\
· are format fix public void start() { ... }

1
Construirea obiectelor

· 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) {}
}
}

public void stop() {


run = false;
}

2
Construirea obiectelor

public void paint( Graphics g ) {


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

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

Ex:

Variabile folosite de clase


n variabile de instan]\ : specifice fiec\rei instan]e
n 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:”)
}
}

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(); }

3
Construirea obiectelor

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\
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 {

4
Construirea obiectelor

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++;
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.

5
Construirea obiectelor

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();

S-ar putea să vă placă și