+ All Categories
Home > Documents > ! HELP JAVA

! HELP JAVA

Date post: 03-Apr-2018
Category:
Upload: mircea-timisoara
View: 240 times
Download: 1 times
Share this document with a friend

of 29

Transcript
  • 7/28/2019 ! HELP JAVA

    1/29

    Acest document este ! HELP JAVA.doc

    Cea mai bun carte este a lui FrasinaruPROGRAMARE JAVA Frasinaru totE@@. Ea contine explicatii, cod, cod separat, totul.Cartea de baz este

    PROGRAMARE Cristian_Frasinaru-Curs_practic_de_Java@@.pdf

    Pentru programarea grafic a applet-ului este bunH:\! ! ! ! ! De scris\PROGRAMARE JAVA Doc Examples ReferenceGlossary@@\PROGRAMARE Java AWT Reference Zukowski

    JAVA J2EETutorial.pdf

    Foarte multe exemple H:\! ! ! ! ! De scris\JAVA 14 code\samples

    N LABORATOARELE LUI PAIN sunt multe INfORMAII UTILE.

    Documentatie pachete, clase: Google Java API Reference

    Java: program classic: main i alteleApplet: metode pentru evenimente (doc Pain).Programul de baz este automat un obiect.

    Interfaa este mai mult ca o clas abstract care are numai metode abstracte. Pentru c n Javanu este permis motenirea multipl. Interfeele permit realizarea de legturi.class NumeClasa implements Interfata1, Interfata2, ...interface NumeInterfata extends Interfata1, Interfata2, ...

  • 7/28/2019 ! HELP JAVA

    2/29

    class FirstApp {public static void main( String args[]) {

    System.out.println("Hello world");

    }}

    Salvarea fisierelor sursaSe va face n fisiere cu extensia .javaFiserul care contine codul sursa al clasei primare trebuie sa aiba acelasi nume cu clasaprimara a aplicatiei (clasa care contine metoda main)Applet

    Scrierejavac FirstApp.java -> FirstApp.classcompilarejava FirstApp rulare

    import java.awt.* ;import java.applet.* ;public class FirstApplet extends Applet {

    Image img;public void init() {

    img = getImage(getCodeBase(), "taz.gif");}public void paint (Graphics g) {

    g.drawImage(img, 0, 0, this);g.drawOval(100,0,150,50);g.drawString("Hello! My name is Taz!", 110, 25);

    }}

  • 7/28/2019 ! HELP JAVA

    3/29

  • 7/28/2019 ! HELP JAVA

    4/29

    Tip[] numeVector; sauTip numeVector[];

    Ex: int[] intregi;String adrese[];

    Instantierea

    Se realizeaza prin intermediul operatorului new si are ca efect alocarea memoriei pentruvector, mai precis specificarea numarului maxim de elemente pe care l va avea vectorul;numeVector = new Tip[dimensiune];

    Ex: v = new int[10]; //se aloca spatiu pentru 10 intregiadrese = new String[100];

    Obs: declararea si instantierea unui vector pot fi facute simultan astfel:Tip[] numeVector = new Tip[dimensiune];

    Initializarea (optional)Dupa declararea unui vector, acesta poate fi initializat, adica elementele sale pot primi nistevalori initiale, evident daca este cazul pentru asa ceva. In acest caz instantierea lipseste,alocarea memoriei facu-se automat n functie de numarul de elemente cu care se

    initializeaza vectorul.Ex: String culori[] = {"Rosu", "Galben", "Verde"};int []factorial = {1, 1, 2, 6, 24, 120};

    Observatii:Primul indice al unui vector este 0, deci pozitiile unui vector cu n elemente vor fi cuprinse

    re 0 si n-1Nu sunt permise constructii de genul Tip numeVector[dimensiune], alocarea memorieifac u-se doar prin intermediul opearatorului new.Ex: int v[10]; //ilegal

    int v[] = new int[10]; //corectDimensiunea unui vector

    Cu ajutorul cuvului cheie length se poate afla dimensiunea unui vector.int []a = new int[5];a.length are valoarea 5 este o proprietate a obiectuluiint m = new int[5][10];m[0].length are valoarea 10

    Copierea vectorilorCopierea unui vector n alt vector se face cu ajutorul metodei System.arraycopy:

    int x[] = {1, 2, 3, 4};int y[] = new int[4];System.arraycopy(x,0,y,0,x.length);

    Vectori cu dimensiune variabila

    Implementarea vectorilor cu numar variabil de elemente este oferita de clasa Vector dinpachetul java.util. Un obiect de tip Vector contine numai elemente de tip Object.In Java, un sir de caractere poate fi reprezentat printr-un vector format din elemente de tipchar, un obiect de tip String sau un obiect de tip StringBuffer.

    System.out.print("Vectorul v are" + v.length + " elemente")java NumeAplicatie [arg1 arg2 . . . argn]

    dac paramtrul conine sp, se pune ntre public static void main ( String args[])numarArgumente = args.length ;

  • 7/28/2019 ! HELP JAVA

    5/29

    Spre deosebire ce C/C++ vectorul primit de metoda main nu contine pe prima pozitie

    numele aplicatiei

    public class Echo {public static void main (String[] args) {for (int i = 0; i < args.length; i++)

    System.out.println(args[i]);}

    }Argumente numerice la linia de comandaArgumentele de la linia de comanda sunt primite sub forma unui vector de siruri (obiecte detip String). In cazul n care unele dintre acestea reprezinta valori numerice ele vor trebuiconvertite din siruri n numere. Acest lucru se realizeaza cu metode de tipul parseXXXaflate n clasa corespunzatoare tipului n care vrem sa facem conversia: Integer, Float,Double, etc.Sa consideram, de exemplu, ca aplicatia Power ridica un numar real la o putere reaga,argumentele fiind trimise de la linia de comanda:

    java Power "12.1" "3" //ridica 12.1 la puterea 3Conversia celor doua argumente n numere se va face astfel:

    double numar;int putere;numar = Double.parseDouble(args[0]);putere = Integer.parseInt(args[1]);

    Metodele de tipul parseXXX pot produce exceptii (erori) de tipul NumberFormatExceptionn cazul n care sirul primit ca parametru nu reprezinta un numar de tipul respectiv.

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

    Alocarea este obligatorie i se face prin new.

    args.lengthSystem.out.println("N");System.exit(-1);

    System.out.println("Rezultat=" + Math.pow(numar, putere));

    Tipurile noi de date se introduc prin = Clase InterfeeDeclararea unei clase respec urmtorul format general:[public][abstract][final]class NumeClasa[extends NumeSuperclasa][implements Interfata1 [, Interfata2 ... ]]{// Corpul clasei}

  • 7/28/2019 ! HELP JAVA

    6/29

    class B extends A {...}// A este superclasa clasei B// B este o subclasa a clasei AImplementarea metodelor unei clase trebuie s se fac obligatoriu n corpul clasei.

    class Exemplu {double x;protected static int n;public String s = "abcd";private Point p = new Point(10, 10);final static long MAX = 100000L;}

    Variabil static = variabila nu de instan, ci de clasVariabil final = constant. Ea poate fi definit i ulterior, dar apoi nu mai poate fimodificat.

    Variabil transient = nu particip la serializarea obVariabil volatile = nu particip la unele optimizri la compilare

    This = referin la obiectul current. Sunt n clasa AAA i m refer la variabila x. n loc deAAA.x pot scrie this.xSuper = referin la obiectul printe

    class A { int x; A() {this(0);}A(int x) {

    this.x = x;}void metoda() {x ++;}}

    class B extends A {B() {this(0);

    }B(int x) {super(x); System.out.println(x);}

    void metoda() {super.metoda();

  • 7/28/2019 ! HELP JAVA

    7/29

    System.out.println(x);}[modificatori] TipReturnat numeMetoda ( [argumente] )

    [throws TipExceptie1, TipExceptie2, ...]{// Corpul metodei}O metoda abstracta este o metoda care nu are implementare si trebuie obligatoriu sa facaparte dintr-o clasa abstracta.

    nativeIn cazul n care avem o librarie important de funcii scrise n alt limbaj de programare,cum ar fi C, C++ si limbajul de asamblare, acestea pot fi refolosite din programeleJava. Tehnologia care permite acest lucru se numeste JNI (Java Native Interface) si

    permite asocierea dintre metode Java declarate cu native si metode native scrise nlimbajele de programare mentionate.synchronizedEste folosit n cazul n care se lucreaz cu mai multe fire de execuie iar metoda respectivgestioneaz resurse comune. Are ca efect construirea unui monitor care nu permiteexecutarea metodei, la un moment dat, dect unui singur fir de execuie.Metodele care nu returneaz nimic au tipul void. Obligatoriu se scrie el.

    Dac o metod trebuie s returneze o valoare acest lucru se realizeaz prin intermediulinstruciunii return, care trebuie s apar n toate situaiile de terminare a funciei.

    double radical(double x) {if (x >= 0)return Math.sqrt(x);else {System.out.println("Argument negativ !");// Eroare la compilare// Lipseste return pe aceasta ramura}}

    Pentru a afla starea obiectului transmiterea prin valoare nu este bun. Se folosete o clas:

    // Varianta corecta class Param {public int x, y, raza;}

    class Cerc {private int x, y, raza;public void aflaParametri(Param param) {param.x = x; param.y = y; param.raza = raza;}}

  • 7/28/2019 ! HELP JAVA

    8/29

    Alt metod:Se afl valorile cu funcia i se seteaz cu this.class Cerc {

    private int x, y, raza; public int getX() { return x;}public void setX(int x) {this.x = x;}...}

    Nu exist variabile globale. Se folosesc variabile de clas (nu de instan, care ar trebui tottimpul realocate).funcia sqrt care extrage radicalul unui numr i care se gsete n clasa Math. Dac

    nu ar fi fost funcie de clas, apelul ei ar fi trebuit fcut astfel (incorect, de altfel):

    // Incorect !Math obj = new Math();double rad = obj.sqrt(121);

    ceea ce ar fi fost extrem de neplcut... Fiind ns metod static ea poate fi apelat prin:Math.sqrt(121) .

    LAS MBRICAT:class ClasaDeAcoperire{

    class ClasaImbricata1 {// Clasa membru}void metoda() {class ClasaImbricata2 {// Clasa locala metodei}}

  • 7/28/2019 ! HELP JAVA

    9/29

    Clase i metode abstracte. Am Graphiscs. O serie de operaii sunt comune: schimbarea culorii,poziia, etc. Altele sunt specfice, cum este desenarea figurii, care variaz de la desen la desen:cerc, ptrat. Declar desenarea ca abstract i pun toate metodele neabstracte i abstracte ntr-o clabsteact. Ea este superclas pe baza creia construiesc clasele cerc, ptrat, unde defines modulde desenare.

    Fluxuri import java.io.*;

  • 7/28/2019 ! HELP JAVA

    10/29

    i m p o r t j a v a . i o . * ;Listing 4.1: Copierea unui fisierp u b l i c c l a s s C o p i e r e {

    p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) {

    t r y {F i l e R e a d e r = n e F i l e R e a d e r " i n . t x tF i l e W r i t e r = n e F i l e W r i t e r ( " o u t . t x

    w h i l e ( ( c = i n . r e a d ( ) ) ! = -1)o u t . w r i t e ( c ) ;

    i n . c l o s e ( ) ;o u t . c l o s e ( ) ;

    } c a t c h ( I O E x c e p t i o n e ) {S y s t e m . e r r . p r i n t l n ( " E r o a r e l a o p e r a t i i l e c u f i s i e r e ! " ) ;e . p r i n t S t a c k T r a c e ( ) ;}}}

    Listing 4.2: Concatenarea a dou fiiere/ * C o n c a t e n a r e a a d o u a f i s i e r e

    a l e c a r o r n u m e s u n t p r i m i t e d e l a l i n i a d e c o m a n d a .R e z u l t a t u l c o n c a t e n a r i i e s t e a f i s a t p e e c r a n .* /i m p o r t j a v a . i o . * ;p u b l i c c l a s s C o n c a t e n a r e {p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] ) {i f ( a r g s . l e n g t h

  • 7/28/2019 ! HELP JAVA

    11/29

    s . c l o s e ( ) ;/ / f 1 s i f 2 s u n t i n c h i s e a u t o m a t} c a t c h ( I O E x c e p t i o n e ) {

    e . p r i n t S t a c k T r a c e ( ) ;}}}

    Clasa File se refer la fiiere i directoare.

    Listing 4.6: Listarea coninutului unui director/ * P r o g r a m u l l i s t e a z a f i s i e r e l e s i s u b d i r e c t o a r e l e u n u i

    d i r e c t o r .P e n t r u f i e c a r e d i n e l e v o r f i a f i s a t e d i v e r s e i n f o r m a t i i .N u m e l e d i r e c t o r u l u i e s t e p r i m i t c a a r g u m e n t d e l al i n i a d e c o m a n d a , s a u e s t e d i r e c t o r u l c u r e n t .* /

    i m p o r t j a v a . i o . * ;

  • 7/28/2019 ! HELP JAVA

    12/29

    120 CAPITOLUL 4. INTRRI SI IEIRI

    i m p o r t j a v a . u t i l . * ;p u b l i c c l a s s L i s t a r e D i r e c t o r {

    p r i v a t e s t a t i c v o i d i n f o ( F i l e f ) {/ / A f i s e a z a i n f o r m a t i i d e s p r e u n f i s i e r s a u d i r e c t o rS t r i n g n u m e = f . g e t N a m e ( ) ;i f ( f . i s F i l e ( ) )S y s t e m . o u t . p r i n t l n ( " F i s i e r : " + n u m e ) ;e l s ei f ( f . i s D i r e c t o r y ( ) )S y s t e m . o u t . p r i n t l n ( " D i r e c t o r : " + n u m e ) ;

    S y s t e m . o u t . p r i n t l n (" C a l e a b s o l u t a : " + f . g e t A b s o l u t e P a t h ( ) +" \ n P o a t e c i t i : " + f . c a n R e a d ( ) +" \ n P o a t e s c r i e : " + f . c a n W r i t e ( ) +" \ n P a r i n t e : " + f . g e t P a r e n t ( ) + " \ n C a l e : " + f . g e t P a t h ( ) +" \ n L u n g i m e : " + f . l e n g t h ( ) +" \ n D a t a u l t i m e i m o d i f i c a r i : " +n e w D a t e ( f . l a s t M o d i f i e d () ) ) ;S y s t e m . o u t . p r i n t l n ( " - - - - - - - - - - - - - - " ) ;}

    p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) {S t r i n g n u m e ;i f ( a r g s . l e n g t h = = 0 )n u m e = " . " ; / / d i r e c t o r u l c u r e n te l s en u m e = a r g s [ 0 ] ;

    t r y {F i l e d i r e c t o r = n e w F i l e ( n u m e ) ;F i l e [ ] c o n t i n u t = d i r e c t o r . l i s t F i l e s ( ) ;

    f o r ( i n t i = 0 ; i < c o n t i n u t . l e n g t h ; i + + )i n f o ( c o n t i n u t [ i ] ) ;

    } c a t c h ( E x c e p t i o n e ) {e . p r i n t S t a c k T r a c e ( ) ;}}}

    Inbterfa = colecie de metode fr implementare i declaraii de constante. O clasabstract poate conine i metode definite, aici nu este definit niciuna.

  • 7/28/2019 ! HELP JAVA

    13/29

    Utilitatea interfeelor

    Dup cum am vzut, o interfa definete un protocol ce poate fi implementatde orice clas, indiferent de ierarhia de clase din care face parte. Interfeele sunt utile

    pentru: definirea unor similaritati ntre clase independente fr a fora artificialo legatur ntre ele; asigur c toate clasele care implementeaz o interfa pun la dipoziie metodelespecificate n interfa - de aici rezult posibilitatea imple- mentrii unor clase prin maimulte modaliti i folosirea lor ntr-o manier unitar; definirea unor grupuri de constante; transmiterea metodelor ca parametri;

    PACHET = COLECIE DE CLASE I INTERFEE. BIBLIOTECI. java.lang - clasele de baz ale limbajului Java

    java.io - intrri/ieiri, lucrul cu fiiere

    java.util - clase i interfee utile

    java.applet - dezvoltarea de appleturi

    145

  • 7/28/2019 ! HELP JAVA

    14/29

    java.awt - interfaa grafic cu utilizatorul

    java.awt.event - mecanismele de tratare e evenimentelor generate de utilizator

    java.beans - scrierea de componente reutilizabile

    java.net - programare de reea

    java.sql - lucrul cu baze de date

    java.rmi - execuie la distan Remote Message Interface

    java.security - mecanisme de securitate: criptare, autentificare

    java.math - operaii matematice cu numere mari

    java.text - lucrul cu texte, date i numere independent de limb

    java.lang.reflect - introspecie

    javax.swing - interfaa grafic cu utilizatorul, mult mbogit fa deAWT.

    Pentru a folosi o clas:Putem s o prefixm cu numele pachetului de fiecare dat cnd o folosimPutem s importm pachetul, apoi putem s scriem doar numele pachetuluiimport java.awt.*;

    Proiecte:Numele fiierului .java este numele clasei.Poate exista numai o clas public pe pachetClasele dintr-un pachet sunt n directoare cu numele pachetelor

    6.2.2 Organizarea unitilor de compilare (.class)

    In urma compilrii fiierelor surs vor fi generate uniti de compilare pentru fiecare clasi interfa din fiierele surs. Dup cum tim acestea au extensia.class i numele scurt al clasei sau interfeei respective.Spre deosebire de organizarea surselor, un fiier .class trebuie s segaseasca ntr-o ierarhie de directoare care s reflecte numele pachetului din care face parteclasa respectiv.Implicit, n urma compilrii fiierele surs i unitile de compilare segsesc n acelai director, ns ele pot fi apoi organizate separat. Este recomandat ns caaceast separare s fie fcut automat la compilare.Revenind la exemplul de mai sus, vom avea urmtoarea organizare:

  • 7/28/2019 ! HELP JAVA

    15/29

    /matematica/clase/geometrie

    /plan Poligon.class Cerc.class/spatiu

  • 7/28/2019 ! HELP JAVA

    16/29

    Poliedru.classSfera.class/algebra

    Grup.class/analizaFunctie.class

    Matematica.class

    Crearea acestei structuri ierarhice este facut automat de ctre compilator.In directorul aplicatiei (matematica) crem subdirectorul clase i dm co- manda:

    javac -sourcepath surse surse/Matematica.java -d clase sau

    javac -classpath surse surse/Matematica.java -d claseOpiunea -d specific directorul rdcin al ierarhiei de clase. In lipsa lui, fiecare unitate decompilare va fi plasat n acelai director cu fiierul su surs.Deoarece compilm clasa principal a plicaiei, vor fi compilate n cascadtoate clasele referite de aceasta, dar numai acestea. In cazul n care dorim scompilm explicit toate fiierele java dintr-un anumit director, de exemplusurse/geometrie/plan, putem folosi expresia:

    javac surse/geometrie/plan/*.java -d clase

    In concluzie, o organizare eficient a fiierelor aplicaiei ar arta astfel:/matematica/surse/clase compile.bat(javac -sourcepath surse surse/Matematica.java -d clase)run.bat(java -classpath clase Matematica)

    Serializare = transformare obiect n ir octei nu salveaz doar imaginea unui obiect ci i toatereferinele la alte obiecte pe care acesta le conine.

    Un fir de execuie trebuie s ruleze n cadrul unui process.Care ar fi ns deosebirile ntre un fir de execuie i un proces ? In primul, rnd deosebireamajor const n faptul c firele de execuie nu pot rula dectn cadrul unui proces. O alt deosebire rezult din faptul c fiecare proces are propria samemorie (propriul su spaiu de adrese) iar la crearea unui nou proces (fork) este realizat ocopie exact a procesului printe: cod i date, n timp ce la crearea unui fir nu este copiat dect

  • 7/28/2019 ! HELP JAVA

    17/29

    codul procesului printe, toate firele de execuie avnd acces la aceleai date, datele procesuluioriginal. Aadar, un fir mai poate fi privit i ca un context de execuie n cadrul unui proces.

    getCodeBase d URL-ul directorului unde este applet-ulgetDocumentBase HTML-ul

    Point []vector = new Point[10]; Class c = vector.getClass();System.out.println(c.getComponentType());// Va afisa: class java.awt.Point

    Program applet preluare date din HTMLimport java.awt.*;import java.applet.*;public class BarChart extends Applet{

    int n=0;

    String label[];int value[];public void init(){

    try{

    n=Integer.parseInt(getParameter("columns"));label=new String[n];value=new int[n];label[0]=getParameter("label1");label[1]=getParameter("label2");

    label[2]=getParameter("label3");label[3]=getParameter("label4");value[0]=Integer.parseInt(getParameter("c1"));value[1]=Integer.parseInt(getParameter("c2"));value[2]=Integer.parseInt(getParameter("c3"));value[3]=Integer.parseInt(getParameter("c4"));

    }catch(NumberFormatException e){}}

  • 7/28/2019 ! HELP JAVA

    18/29

  • 7/28/2019 ! HELP JAVA

    19/29

    }}

    public void paint(Graphics g){ // metoda paint()get_size(); // preluare dimensiuni appletthis.setBackground(Color.black); // setare culoare fond

    this.setForeground(Color.yellow); // setare culoare scrisg.setColor(Color.orange);Font f=new Font("Timesn",Font.BOLD,lit); // definire caractereg.setFont(f); // setare scrisg.drawString("Move",x,y-5); // scriere mesaje protected ecran

    Font f1=new Font("Arial", Font.BOLD, 9);g.setColor(Color.orange);g.fillRect(x, y, 70, 70);g.setColor(Color.white);g.setFont(f1);g.drawString("TM", x+58, y+64);

    }}

    Pain laboratorul 1Apelul metodelor statice si nestatice

    class ExpSwitch {static void numara(int i) {switch (i) {case 1 : IO.write("unu ");

    case 2 : IO.write("doi ");case 3 : IO.writeln("trei");}

    }

    public static void main (String[] args) {numara(3); numara(2); numara(1);

    /* ExpSwitch s=new ExpSwitch();s.numara(3); s.numara(2); s.numara(1);*/

    }}

    va produce la ieire:treidoi treiunu doi trei

  • 7/28/2019 ! HELP JAVA

    20/29

    Obs: metodele clasei apelate direct n main trebuie sa fie statice (cu modificatorul static). Altfeltrebuia creat un obiect de tip ExpSwitch pentru a putea apela metoda numara a acestui obiect, aacum se arat n partea de program comentat

    class DreptunghiMain{public static void main(String arg[]){//cream un dreptunghiDreptunghi d;double a;d=new Dreptunghi(3,5);System.out.print("Dreptunghi initial: ");d.afisare();a=d.arie();System.out.println("arie="+a);

    //cream un nou dreptunghi, de dimensiuni citite de la tastaturadouble x,y ;System.out.println("Introduceti lungimea si latimea noului dreptunghi");x=IO.read();y=IO.read();Dreptunghi d2=new Dreptunghi(x,y);System.out.print("Noul dreptunghi: ");d2.afisare();System.out.println("arie="+d2.arie());

    if (d.maiMare(d2))

    System.out.println("Noul dreptunghi e mai mare");elseSystem.out.println("Dreptunghiul initial e mai mare");

    d2=new Dreptunghi(); //se va apela constructorul fara argumenteSystem.out.print("Dreptunghi unitate: ");d2.afisare();

    }

    }

    Tablourile multidimensionale trebuie gndite ca tablouri unidimensionale ale cror elemente sunttablouri unidimensionale etc. De aceea referirea la un element al unui tablou multidimensional ase face prin:a[indice1]...[indicen].

    Este suficient s reducem discuia la tablouri bidimensionale, generalizarea fiindimediat. S considerm urmtorul exemplu:int[][] a = new int[3][];a[0] = new int[3];

  • 7/28/2019 ! HELP JAVA

    21/29

    a[1] = new int[4];a[2] = new int[2];

    Ia natere astfel un tablou de forma:

    ceea ce arat c n Java tablourile nu sunt neaprat dreptunghiulare; aceasta conduce desigur laeconomie de spaiu.

    Evident, a[1].length=4.La aceeai structur se poate ajunge i printr-o iniializare efectiv:

    int[][] a = { {0,1,2}, {1,2,3,4}, {2,3} };care n plus atribuie valori elementelor tabloului.Applet/ul are deja un set de metode cu nume prederfinite, la fel ca evenimentele din Visual

    vBasicSystem.out.println("start");Afi;eay[ ]n fereastra consola (si nu in fereastra applet-ului. Trebuie cautata).Metodele se pot defini numai in interiorul claselor.

    Exemplu complet de program i setri proiect n IDEClasa = camp, metode, constructoriLansare programNew project/Java/Java applicationProject name doiJos el numete clasa principal Main, aa c aa o numesc i eu. Dac schimb numele jos, o pot

    folosi cu noul nume: unu.unu. Daca schimb ulterior poate nu merge, asa ca de la inceput puncorect jos: .package unu;import java.io.*; // Nu este folosit i n IDE apare o sfer portocalie ca s arate aceastapublic class Main {public static void main(String[] args){System.out.println("Sunt "+args.length+" argumente:");for(int i=0; i

  • 7/28/2019 ! HELP JAVA

    22/29

    Compilare n linia de comand: javac unu.java. Javac se gsete n C:\ProgramFiles\Java\jdk1.6.0_11, nu n JavaBeansRulare n linia de comand: java Java unu Ion Maria PopescuDac argumntele conin spaii, se pun ntre ghilimele java unu Mircea Tirziu

    Conversia n numere: Integer.parseInt(sir), Double.parseDouble(sir)Radical: x = Math.sqrt(25);

    Obiectele sunt referineTipuri de date: byte (1), short (2), int (4), long (8), float (4), double (8), Boolean (true, false),char (2, Unicode)Constant long: 123L

    Conform standardului IEEE 754, sunt inclui i literali pentru "nu este un numr"(mprire cu zero) , - i +. Double.NaN, Double.NEGATIVE_INFINITY iDouble.POSITIVE_INFINITY

    (pentru aritmetica pe 8 octei), Float.NaN, Float.NEGATIVE_INFINITY iFloat.POSITIVE_INFINITY (pentru aritmetica pe 4 octei).\uxxxx character UnicodeVariabilele claselor rimesc valori implicite: o, false, nullSe admite cast (tip dat) variabilOperator Obiect instanceof clasaAcces la metode i variabile: private, protected, Friendly (implicit), publicVariabil:Static aparine clasei, exiast i dac nu s-a fcut nici o instVolatile, poate s nu rmn, ea poate fi modif asincrFinal, constant

    Acest ex arat c pot modifica un ir declarat cu String:package salut;public class Main {

    static String strUtilizator = "Ion";

    public static void main(String args[]) {String strMesaj = "Buna ziua";if(args.length >0) {

    strUtilizator = args[0];}

    strMesaj+=" "+strUtilizator+"!";System.out.println(strMesaj);}

    }

    Schimb de mesaje = comunicare dintre obiecte

  • 7/28/2019 ! HELP JAVA

    23/29

  • 7/28/2019 ! HELP JAVA

    24/29

    System.out.println("Varsta: " + varsta);System.out.println("Inaltimea: " + inaltimea);System.out.println("Sexul: " + ((sex=='F') ? "feminin" : "masculin"));

    }}

    Atributele se declar de obicei private i metodele se declar publiceClasa Object este clasa care generea[ toate celelalte clase.Declaraiile de mai jos sunt echivalente:class Exemplu {}class Exemplu extends Object {}

    try {// Instructiuni care pot genera exceptii}

    catch (

    TipExceptie1 variabila) {// Tratarea exceptiilor de tipul 1}

    catch (TipExceptie2 variabila) {// Tratarea exceptiilor de tipul 2}. . .

    finally {// Cod care se executa indiferent// daca apar sau nu exceptii}

    Program de citire a unui fiier i de afiare pe monitor cu prinderea i aruncarea excepiilorFiierul se afla in folderol n care pune proiectul.

    package citirefisier;import java.io.*;public class CitireFisier {

    public static void citesteFisier ( String fis) {FileReader f = null ;try {

    // Deschidem fisierul

    System.out.println ("Deschidem fisierul " + fis);f = new FileReader (fis );// Citim si afisam fisierul caracter cu caracterint c;while ( (c=f.read ()) != -1)

    System.out.print ((char)c);} catch ( FileNotFoundException e) {// Tratam un tip de exceptie

  • 7/28/2019 ! HELP JAVA

    25/29

    System.err.println ("Fisierul nu a fost gasit !");System.err.println ("Exceptie : " + e. getMessage ());System.exit (1);

    } catch ( IOException e) {// Tratam alt tip de exceptie

    System.out.println ("Eroare la citirea din fisier !");e. printStackTrace ();} finally {

    if (f != null ) {// Inchidem fisierulSystem.out.println ("\nInchidem fisierul .");

    try {f. close ();

    } catch ( IOException e) {System.err.println ("Fisierul nu poate fi inchis !");e. printStackTrace ();

    }}}

    }

    public static void main ( String args []) {if ( args.length > 0)

    citesteFisier ( args [0]) ;else

    System.out.println (" Lipseste numele fisierului !");}

    }package copierefisier;import java.io.*;public class CopiereFisier {

    public static void main(String[] args) {try {

    FileReader in = new FileReader ("aaa.txt ");FileWriter out = new FileWriter ("aab.txt ");int c;while ((c = in. read ()) != -1)out.write (c);in.close ();out.close ();} catch ( IOException e) {System.err.println (" Eroare la operatiile cu fisiere !");e.printStackTrace ();}

    }

  • 7/28/2019 ! HELP JAVA

    26/29

    }

    Fir decexecuie = ca un process, dar datele sunt commune cu celelalte fire de execuie.

    The syntax of the tag is shown below; the order of the parameters doesnot matter:

    ...[alternate-html]

    DImage LoadingIn this appendix: How Images areLoaded A Brief Tour ofsun.awt.image

    D.1 How Images are LoadedYou have seen how easy it is to display an image on screen and have probablyguessed that theres more going on behind the scenes. The getImage() and draw-Image() methods trigger a series of events that result in the image being availablefor display on the ImageObserver. The image is fetched asynchronously in anotherthread. The entire process* goes as follows:1. The call to getImage() triggersToolkit to call createImage() for the imagesInputStreamImageSource (which is a URLImageSource in this case; it would bea FileImageSource if we were loading the image from a local file).2. TheToolkit registers the image as being desired. Desired just means thatsomething will eventually want the image loaded. The system then waits untilan ImageObserver registers its interest in the image.3. The drawImage() method (use ofMediaTracker or prepareImage()) registersan ImageObserver as interested.4. Registering an ImageObserver kicks the images ImageRepresentation intoaction; this is the start of the loading process, although image data isnt actuallytransferred until step 9. ImageRepresentation implements the ImageConsumer

  • 7/28/2019 ! HELP JAVA

    27/29

    inter face.5. The start of production registers the image source (ImageProducer URLImage-Source) with the ImageFetcher and also registers the ImageRepresentation asan ImageConsumer for the image.* This summary covers Suns implementation ( JDK). Implementations that dont derive from the JDKmay behave completely differently.1017

    1018 APPENDIX D: IMAGE LOADING6. The ImageFetcher creates a thread to get the image from its source.7. The ImageFetcher reads data and passes it along to the InputStreamImage-Source, which is a URLImageSource.8. The URLImageSource determines thatJPEGImageDecoder is the properImageDecoder for converting the input stream into an Image. (Other ImageDecodersare used for other image types, like GIF.)9. The ImageProducer starts reading the image data from the source; it calls theImageConsumer (i.e., the ImageRepresentation) as it processes the image. Themost important method in the ImageConsumer inter face is setPixels(), whichdelivers pixel data to the consumer for rendering onscreen.10. As the ImageConsumer (i.e., the ImageRepresentation) gets additional information,it notifies the ImageObserver via imageUpdate() calls.

    11. When the image is fully acquired across the network, the thread started by theImageFetcher stops.As you see, there are a lot of unfamiliar moving pieces. Many of them are from thejava.awt.image package and are discussed in Chapter 12, Image Processing. Othersare from the sun.awt.image package; they are hidden in that you dont need toknow anything about them to do image processing in Java. However, if youre curious,well briefly summarize these classes in the next section.

    D.2 A Brief Tour of sun.awt.imageThe classes in sun.awt.image do the behind-the-scenes work for rendering animage from a file or across the network. This information is purely for the curious;you should never have to work with these classes yourself.Image

    The Image class in this package represents a concrete Image instance. It containsthe basis for the Image class that is actually used on the run-time platform,which exists in the package for the specific environment. For instance,the sun.awt.win32 package includes the W32Image ( Java 1.0), thesun.awt.windows package includes WImage ( Java 1.1), while thesun.awt.motifpackage includes the X11Image, and the sun.awt.macos packageincludes the MacImage.ImageRepresentation

    The ImageRepresentation is the ImageConsumer that watches the creation ofthe image and notifies the ImageObserver when it is time to update the display.It plays an important part in the overall control of the Image productionprocess.Image sourcesA Java image can come from three different sources: memory (through createImage()),local disk, or the network (through getImage()). OffScreenImageSource implements ImageProducer for a single framedimage in memory. When an Image created from an OffScreenImageSourceis drawn with drawImage(), the ImageObserver parameter can be nullsince all the image information is already in memory and there is no needfor periodic updating as more is retrieved from disk. You can get thegraphics context ofOffScreenImageSource images and use the context todraw on the image area. This is how double buffering works. InputStreamImageSource implements ImageProducer for an image that

  • 7/28/2019 ! HELP JAVA

    28/29

    comes from disk or across the network. When an Image created from anInputStreamImageSource is drawn with drawImage(), the ImageObserverparameter should be the component being drawn on (usually this) sincethe image information will be loaded periodically with the help of theImageObserver inter face). This class determines how to decode the imagetype and initializes the ImageDecoder to one ofGifImageDecoder,JPEGImageDecoder,

    or XbmImageDecoder, although that can be overridden by asubclass. It can use a ContentHandler to work with unknown image types. FileImageSource is a subclass ofInputStreamImageSource for images thatcome from the filesystem. It uses the filename to determine the type ofimage to decode and checks the security manager to ensure that access isallowed. URLImageSource is a subclass ofInputStreamImageSource for images thatare specified by a URL. ByteArrayImageSource ( Java 1.1 only) is a subclass ofInputStreamImage-Source for images that are created by callingToolkit.createImage(byte[]).Image decodersAn ImageDecoder is utilized to convert the image source to an image object. Ifthere is no decoder for an image type, it can be read in with the help of a ContentHandleror your own class that implements ImageProducer, like thePPMImageDecoder shown in Chapter 12. GifImageDecoder reads in an image file in the GIF format.JPEGImageDecoder reads in an image file in theJPEG format.D.2 A BRIEFTOUR OF SUN.AWT.IMAGE 10191020 APPENDIX D: IMAGE LOADING XbmImageDecoder reads in an image file in the XBM format. AlthoughXBM support is not required by the language specification, support is providedwith Netscape Navigator, Internet Explorer, HotJava, and the JavaDevelopers Kit from Sun.ImageFetcher

    The ImageFetcher class fetches the actual image from its source. This class createsa separate daemon thread to fetch each image. The thread is run at a

    higher priority than the default but not at the maximum priority.

    Chapter 2 Simple Graphics.pdfChapter 4 Events.pdf

    Example 42: Differentiating Mouse Buttons in Java 1.0import java.awt.*;import java.applet.*;public class mouseEvent extends Applet {String theString = "Press a Mouse Key";public synchronized void setString (String s) {

    theString = s;}public synchronized String getString () {return theString;}public synchronized void paint (Graphics g) {g.drawString (theString, 20, 20);}public boolean mouseDown (Event e, int x, int y) {if (e.modifiers == Event.META_MASK) {Example 42: Differentiating Mouse Buttons in Java 1.0 (continued)setString ("Right Button Pressed");

  • 7/28/2019 ! HELP JAVA

    29/29

    } else if (e.modifiers == Event.ALT_MASK) {setString ("Middle Button Pressed");} else {setString ("Left Button Pressed");}repaint ();return true;}

    public boolean mouseUp (Event e, int x, int y) {setString ("Press a Mouse Key");repaint ();return true;}}Example 51: Button Event Handlingimport java.awt.*;import java.applet.*;class TheButton extends Button {TheButton (String s) {super (s);}public boolean action (Event e, Object o) {if ("One".equals(o)) {System.out.println ("Do something for One");

    } else if ("Two".equals(o)) {System.out.println ("Ignore Two");} else if ("Three".equals(o)) {System.out.println ("Reverse Three");} else if ("Four".equals(o)) {System.out.println ("Four is the one");} else {return false;}return true;}


Recommended