Clase pentru aplicatii z7x6xd
Executia programului unei aplicatii incepe prin apelul metodei main() din clasa
primara.
• Daca nu exista metoda main compilatorul afiseaza o eroare.
• Metodele main trebuie declarate publice
• public static void main (String argsst) S ... T
• Permite apelul cu parametri de la linia de comanda : public class A S public static void main (String argsst) S
System.out.println(argss0t);
T
T
Clase pentru miniaplicatii
Miniaplicatiile constituie extensii ale unei clase deja existente java.applet.Applet.
Structura clasei unui applet se bazeaza pe urmatoarele metode : init() start() stop() paint()
init()
• apelata numai atunci cand applet-ul este incarcat pentru prima data
intr-un program de vizualizare
• folosita pentru initializari si prelucrarea elementelor din linia de
comanda
• are format fix public void init() S ... T
• declararea sa nu este necesara, daca se face se redefineste metoda init()
din clasa java.applet.Applet
start()
• apelata dupa metoda init() atunci cand miniap. este incarcata pentru
prima data sau cand executia ei a fost suspendata si trebuie reluata
• are format fix public void start() S ... T
• declararea sa nu este necesara, daca se face se redefineste metoda start()
din clasa java.applet.Applet
stop()
• apelata de fiecare data cand o miniap. trebuie oprita sau supendata
• are format fix public void stop() S ... T
• declararea sa nu este necesara, daca se face se redefineste metoda stop()
din clasa java.applet.Applet
paint()
• folosita pentru desenarea sau redesenarea ecranului
• este apelata automat de metoda repaint(), dar poate fi apelata si explicit
• are format fix public void paint(Graphics g) S ... T
• declararea sa, desi nu este ceruta de compilator, este necesara deoarece
aici se fac afisarile pe ecran (redefineste metoda paint() din clasa java.applet.Applet)
Exemplu de applet care foloseste toate cele 4 metode :
import java.awt.Graphics; public class Counter extends java.applet.Applet S int counter; boolean run;
public void init() S counter a 0;
T
public void start() S run a true ;
while (run aa true) S counter ++ ; repaint(); try S Thread.sleep(1000); T
//face o pauza de o secunda catch(InterruptedException e) ST
T
T
public void stop() S run a false;
T
public void paint( Graphics g ) S g.drawString("counter a " + counter, 10, 10);
T
T
Modificatori
? de tip : public class NumeClasa S ... T
(acces permis si claselor din afara propriului pachet)
(orice alt modificator genereaza o eroare de compilare)
? de acces : abstract class NumeClasa S ... T
(creare de clase sablon - supraclase pentru alte clase)
Ex:
Variabile folosite de clase
? variabile de instanta : specifice fiecarei instante
? variabile de clasa : declarate statice, au aceeasi valoare pt. toate instantele
Instante predefinite : null, this - desemnarea explicita a instantei curente a unei variabile super - este o referinta la superclasa clasei curente
Ex: class Animal S static String nume a null;
public void main( String argsst) S
Animal a a new Animal(); if (a.nume aa null) introNume(“Introduceti un nume:”)
T
T
void introNume ( String prompt ) S
StringBuffer nume; char ch a ‘a0’; nume a new StringBuffer();
System.out.println( prompt );
System.out.flush();
while (ch !a ‘an’) S try S ch a (char) System.in.read(); T catch (IOException e) ST; nume.append( ch );
T this.nume a nume.toString();
T
class Pisica extends Animal S void introNumePisica S super.introNume(‘Introduceti numele pisicii:”);
T
T
Modificatorii metodelor
Declararea securitatii si accesibilitatii metodelor:
Nivel Acces permis pentru public toate celelalte clase private nici o alta clasa protected subclase si clase din acelasi pachet private protected numai subclase
<default> clasele din acelasi pachet
static
• asociat numai metodelor si variabilelor, nu si claselor
• precizeaza ca o metoda poate fi declarata o singura data (nu poate fi
redefinita intr-o subclasa)
final - precizeaza ca un obiect este stabilit si nu mai poate fi schimbat
• la nivelul clasei : nu mai poate avea subclase final class A S...T class B extends class A S...T ? eroare!
• la nivelul metodei : nu mai poate fi modificata class A S final varFinala a 100 ; ? variabila ramane constanta void metoda() S varFinala a 200; T ? eroare!
T
• la nivelul var : este declarata constanta class A S final void metoda() S...T
T class B extends A S void metoda() S...T ? eroare!
T
abstract - permite crearea de metode sablon
Supraincarcarea metodelor - overloading class A S void metoda(int x) S...T
T class B extends A S void metoda(string s) S ... T
T
Folosirea obiectelor
1. Crearea si distrugerea obiectelor
• spatiul de memorie nu este pre-alocat
• este dezalocat automat (malloc / free)
• exista un echivalent al constructorului
• nu exista un echivalent al destructorului
• exista metoda finalize care poate fi folosita pe post de destructor
2. Crearea unei instante : NEW
String s; s a new String(10); n a s.length(); if s.compareTo(“test”) ... pos a s.indexOf(“test”);
Distrugerea unei instante : public void destroy() S ... T
Metoda constructor
Identica cu cea din C++; class A S void A(int arg) S ... T void A(String s) S ... T
T
Metoda finalize : void finalize()
Este apelata automat in momentul cand se declanseaza operatiunea de colectare
a gunoiului.
Mostenirea class B extends A S ... T class Figura S int nrVarfuri; void introNrVarfuri() S try SnrVarfuri a System.in.read();T catch(IOException e) ST
T
T class Poligon extends Figura S T
Poligon p a new Poligon(); p.introNrVarfuri();