java – clase si obiecte

17
Java – Clase si obiecte Clase descriere tipuri import si pachete metode constructori Obiecte creare utilizare

Upload: field

Post on 27-Jan-2016

22 views

Category:

Documents


0 download

DESCRIPTION

Java – Clase si obiecte. Clase descriere tipuri import si pachete metode constructori Obiecte creare utilizare. Clase. se declara folosind cuvantul cheie class ; corpul clasei se scrie intre acolade { … }; dupa ce clasa a fost definita, se pot crea obiecte pe baza ei; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Java – Clase si obiecte

Java – Clase si obiecte

Clase descriere tipuri import si pachete metode constructori

Obiecte creare utilizare

Page 2: Java – Clase si obiecte

Clase

se declara folosind cuvantul cheie class; corpul clasei se scrie intre acolade { … }; dupa ce clasa a fost definita, se pot crea obiecte pe

baza ei; obiectul reprezinta o instantiere a clasei clasa poate sa contina:

variabile metode initialiari alte clase

variabilele si metodele clasei pot fi: de instanta: fiecare obiect are propriile instante; variabilele de

instanta definesc starea obiectului; statice: comune clasei si tututor instantelor.

Page 3: Java – Clase si obiecte

Clase - continuare metoda main() este punctul de intrare intr-o aplicatie

Java; trebuie sa fie publica pentru a putea fi apelata de Masina Virtuala Java (MVJ); este statica si nu necesita crearea unei instante de clasa;

persistenta variabileleor din clase sau metode poate fi: membru: creata si la crearea instantei si distrusa la

distrugerea obiectului automata (locale in metoda): create la intrarea in metoda (prin

apel) si pastrata atat timp cat metoda se ruleaza; clasa (sau statica): creata la incarcarea clasei de MVJ si

distrusa la descarcarea clasei. modificatorii de acces la clasa se scriu inainte de

declaratia de clasa (public, protected si private) si controleaza vizibilitatea clasei.

Page 4: Java – Clase si obiecte

Tipuri de clase clasa se pot declara ca si subclasa unei alte clase prin

folosirea cuvantului cheie extends; prin subclasare se formeaza ierarhii de clase; cel mai inalt

nivel in ierarhie se numeste superclasa sau clasa de baza; subclasa mosteneste toate variabilele si metodele (ce nu sunt private) superclasei pe care o extinde; o clasa poate extinde sau mosteni o singura superclasa; subclasa adauga superclasei noi variabile si metode;

clasele de baza din Java sunt din urmatoarele categorii: publice: clase care sunt vizibile pentru alte clase indiferent de

pachet; toate clasele sunt extensia clasei Object in Java; abstracte: o clasa ce este implementata incomplet (are

metode abstracte); din acest motiv nu poate fi instantiata si trebuie extinsa de subclase

finale: o clasa care nu poate avea subclase.

Page 5: Java – Clase si obiecte

Import si pachet codul Java este organizat in pachete; numele de pachete sunt

utilzate de MVJ pentru identificarea si controlul accesului la obiecte; pachetul contine diferite tipuri de clase; numele publice dintr-un

pachet trebuie sa fie unice; pachetele sunt organizate ierarhic si stocate utilizand directori si

fisiere; in cod, numele unei clase trebuie scris complet sub forma numepachet.numesubpachet;

importul defineste procesul de aducere intr-un spatiu intern a ceva din cel extern; procedura de import permire ca in locul numelui complet, in cod, sa se foloseasca doar numesubpachet;

codul poate sa nu aiba un nume de pachet, insa atunci nu poate contine subpachete si va fi stocat intr-un singur director, dar in fisirere distincte (fiecare clasa e un fisier);

bibliotecile de clase standard (java.lang, java.util, java.io, java.net, java.awt, java.swing) Java se pot folosi de programator prin import.

Page 6: Java – Clase si obiecte

Metode -definitie

metoda implementeaza o operatie cu datele obiectului se implementeaza sub forma unor proceduri sau functii (acestea

întorc valori cu return) ce realizeaz anumite operatii se definesc numai într-o declaratie de clasa; tip - defineşte tipul

de date întors de metoda; nume_met - defineşte numele metodei ;[lista parametri] - o secventa opionala de perechi tip nume separate prin virgule;

vizibilitatea defineste cine anume poate apela metoda; pentru public acesta este apelabila in toata aplicatia, pentru private numai de alte metode din clasa în care s-a definit.

daca metoda întoarce valoare (este functie), ea va avea specificat unul dintre tipurile deja discutate şi o instruciune de salt neconditionat return expresie ca va genera întoarcerea în codul apelant cu valoarea lui expresie.

daca metoda nu întoarce valoare (este procedura), tipul ei este obligatoriu void şi nu contine instructiunea return.

vizibilitate tip nume_met([lista parametri]) {

corp_1}

Page 7: Java – Clase si obiecte

Metode -apel

sintaxa generala pentru apelul unei metode este data mai sus;

aplelul este o instructiune de salt ce are ca efect rularea codului din corpul metodei;

parametrii din definitia de metoda sunt variabile ce primesc valori în momentul apelului şi se numesc argumente;

valorile parametrilor ce sunt tipuri de date primitive se transfera printr-o metoda numita transfer prin valoare;

la transferul prin valoare, metodei, i se transfer o copie a valorilor parametrilor din programul apelant; ca urmare modificarea lor in metoda nu afecteaza valorile originale;

in cazul parametrilor de tipul referinta la obiect se poate modifica starea obiectului utilizând metodele puse la dispozitie în acest scop, dar nu se pot modifica referintele argumentelor de tipul referinta la obiect în corpul metodei.

refObiect.nume_met(argumente)

Page 8: Java – Clase si obiecte

Constructor defineşte starea initiala a obiectelor; are acelaşi nume cu clasa; este apelat automat dupa crearea obiectului, înainte ca

operatorul new sa se termine; nu întorc o valoarea de un anumit tip (nu se scrie nici macar

void); sintactic sunt identice cu metodele (pot avea parametri); este

posibil sa nu aiba parametri; daca nu este scris explicit in cod, compilatorul creeaza automat unul implicit

constructorii nu se mostenesc, trebuie definiti pentru fiecare subclasa; un constructor poate apela un altul, dein aceeasi clasa, folosind sintaxa this(argumente); constructorii supercalsei se pot apela foloind sintaxa super(argumente) iar acest apel trebuie sa fie prima linie din constructor;

constructorii pot fi supraincarcati.

public nume_clasa() {...

};

Page 9: Java – Clase si obiecte

Obiecte - creare obiectele se creeaza cu operatorul new

new realizeaza urmtoarele actiuni: aloca memorie pentru nou obiect; apeleaza o metoda speciala de initializare numita constructor; întoarce o referinta la noul obiect (ce trebuie obligatoriu

stocata intr-o variabila referinta la obiect sau, mai pe scurt, referinta, pentru a putea lucra cu obiectul pe mai departe).

variabila referinta la obiect se foloseste pentru a referi (accesa) obiectul; ea trebuie sa fie declarata de un anumit tip (clasa) ce nu se poate schimba dar poate referi orice subtip (subclasa) a tipului

refObiect = new nume_clasa();

Page 10: Java – Clase si obiecte

Exemplul – 1 / 1

public class Punct {//Variabile de instanta private double x; private double y; private double distanta;

//Constructori Punct() { setX(0); setY(0); distanta = 0; } Punct(double x, double y) { setX(x); setY(y); actualizareDistanta(); } // Metode public void setX(double x0) { x = x0; actualizareDistanta(); }

public void setY(double y0) { y = y0; actualizareDistanta(); }

public double x() { return x; }

public double y() { return y; }

public double distantaOrigine() { return distanta; } private void actualizareDistanta() { distanta = Math.sqrt(x*x+y*y); }

public String toString() { return "<" + x + "," + y + ">"; }}

Creati o aplicatie noua, apoi un proiect nou in JDeveloper. Creati clasa Punct ce contine majoritatea elementelor specifice unei clase simple.

Page 11: Java – Clase si obiecte

Exemplul - 1 /2In proiectul ce contine clasa Punct creati o noua clasa cu numele Grafica si codul alaturat.

Observati ca aceasta clasa are doar o metoda main() din care se foloseste pentru crearea de doua obiecte p1 si p2 pe baza clasei Punct.

Rulati apliactia si explicati rezultatele afisate.

public class Grafica { public static void main(String[] args){ Punct p1; Punct p2 = new Punct(-1.,7.); p1 = new Punct(); System.out.println("p1 = " + p1.toString()); System.out.println("p2 = " + p2.toString()); p1.setX(12); p2.setY(13.345); System.out.println("p1 = " + p1.toString()); System.out.println("p2 = " + p2.toString()); }}

Page 12: Java – Clase si obiecte

Exemplul – 1/3public class Grafica1 { public static void main(String[] args) { double x = 5; PunctOK p1 = new PunctOK(); PunctOK p2 = new PunctOK(-1.,7.); System.out.println("in afara lui dubleazaX x este: " + x); dubleazaX(x); System.out.println("in afara lui dubleazaX x este: " + x); System.out.println("p1 = " + p1); System.out.println("p2 = " + p2); interschimba(p1, p2); System.out.println("p1 = " + p1); System.out.println("p2 = " + p2); schimbaX(p1); System.out.println("p1 = " + p1); }

//modificarea valorii argumentului//NU se reflecta in codul apelant public static void dubleazaX(double a) { a = 2. * a; System.out.println("in dubleazaX x este: " + a); } //metoda de interschimbare NU lucreaza//ca urmare a transferului prin valoare public static void interschimba(PunctOK x, PunctOK y){ PunctOK aux = x; x = y; y = aux; }//lucreaza corect public static void schimbaX(PunctOK x) { x.setX(100); }}

In proiectul ce contine clasele Punct si Grafica creati o noua clasa cu numele Grafica1 si codul alaturat. Rulati noua clasa si explicati rezultatele afisate de aplicatie?

Page 13: Java – Clase si obiecte

Aplicatia 1/1 Scrieti o aplicatie Java pentru gasirea solutiei unei ecuatii transcendente prin injumatatirea intervalului.public class InjumatatireV2 { private double a, b, x, eps; protected int max_iter;

public double f(double x) { return 4. * Math.sin(x) - x + 1.; } public InjumatatireV2(double st, double dr, double prec) { a = st; b = dr; eps = prec; max_iter = 100; }

public void solverInjumatatire() { int n = 0; while ((Math.abs(b - a) > eps) && (n++ < max_iter)) { x = (a + b) / 2.; if (f(x) == 0) { System.out.println("Radacina este: " + x); System.exit(0); }

f(x)=4sin(x)-x+1, x in [-3,3]

Page 14: Java – Clase si obiecte

Aplicatia 1/2 if (Math.signum(f(a)) * Math.signum(f(x)) > 0) a = x; else b = x; } if (Math.abs(b - a) > eps) System.out.println("Precizia nu e a fot atinsa in " + (n-1) + " iteratii"); else System.out.println("Radacina aprox. (cu Inj): " + x); } public static void main(String[] args) { InjumatatireV2 sol = new InjumatatireV2(-3.,3., 1.e-07); sol.solverInjumatatire(); }}

Page 15: Java – Clase si obiecte

Aplicatia 2/1Scrieti o aplicatie Java pentru gasirea solutiei unei ecuatii transcendente prin Newton-Raphson intervalului.

public class NewtonRaphsonV1 { private double x, eps; private int max_iter, n;

private double f(double x) { return 4. * Math.sin(x) - x + 1.; }

private double fderivat(double x) { final double h = 0.001; return (f(x + h) - f(x)) / h; } public NewtonRaphsonV1(double x0, double prec, int iter) { x = x0; max_iter = iter; eps = prec; }

Page 16: Java – Clase si obiecte

Aplicatia 2/2public void solverNewtonRaphson() { double aux; do { aux = f(x) / fderivat(x); x -= aux; ++n; } while ((Math.abs(aux) > eps) && (n <= max_iter)); System.out.println("Radacina aprox. (cu N-R V1): " + x);

if (Math.abs(aux) >= eps) { System.out.println("Precizia nu e a fot atinsa in " + n + " iteratii"); } } public static void main(String[] args) { NewtonRaphsonV1 sol = new NewtonRaphsonV1(-3.,1.e-07,100); sol.solverNewtonRaphson(); }}

Page 17: Java – Clase si obiecte

Bibliografie

http://www.east.utcluj.ro/mb/mep/antal/downloads.html > Java: course, IDE (JDeveloper), JDK and JRE, JDeveloper labs.

http://docs.oracle.com/cd/E18941_01/tutorials/jdtut_11r2_50/jdtut_11r2_50.html > Getting Started With the JDeveloper IDE