Java Curs1

Post on 21-Oct-2015

180 views 11 download

description

Curs de java

Transcript of Java Curs1

Universitatea “Constantin Brâncuşi” Târgu-Jiu Facultatea de Inginerie

Catedra de Automatică şi Ştiinţe Aplicate

26

.04

.20

11

A

plic

atii

JAV

A

1

Aplicații Java

Lector dr. Adrian Runceanu

Câteva precizări

Structura cursului

• 2 ore curs – titular curs:

Lector dr. Adrian Runceanu

• 2 ore laborator – titular aplicaţii practice:

Asist. Constantin Cercel

26

.04

.20

11

A

plic

atii

JAV

A

2

Câteva precizări

Forme de examinare:

• Examen final – 60%

• Lucrările practice de laborator susţinute pe parcursul semestrului – 10%

• Verificare finală lucrări de laborator – 30%

26

.04

.20

11

A

plic

atii

JAV

A

3

Câteva precizări Bibliografia necesară cursului: [1.] Adrian Runceanu – Metode si tehnici de programare – limbajul C++, Editura Academica Brancusi, Targu-Jiu, 2003. [2.] Adrian Runceanu – Programarea orientata pe obiecte: limbajul C++, Editura Academica Brancusi, Targu-Jiu, 2007. [3] Adrian Runceanu – Programarea orientata pe obiecte: limbajul C++ îndrumar de laborator, Editura Academica Brancusi, Targu-Jiu, 2008. [4.] Tudor Sorin, Vlad Hutanu - Bazele programarii in Java, Editura L&S Info-Mat, Bucuresti, 2005. [5.] Doina Logofatu – Algoritmi fundamentali in Java. Aplicatii – Editura Polirom, Iasi, 2007. [6.] Horia Georgescu – Introducere in universul Java; Editura Tehnica, Bucuresti, 2002. [7.] Eugen Petac, Tudor Udrescu – Programarea Calculatoarelor. Aplicatii Java; Editura Matrixrom, Bucuresti, 2003.

26

.04

.20

11

A

plic

atii

JAV

A

4

Câteva precizări

• Referinţele bibliografice nr. 1,2, şi 3 se pot împrumuta de la Biblioteca Facultăţii de Inginerie, Str. Geneva nr.3, Etaj I – lângă Decanat.

• 1. Suport curs - varianta electronică disponibilă pe site-ul Facultăţii de Inginerie:

www.utgjiu.ro/ing • 2. Îndrumar de laborator - varianta electronică

disponibilă pe site pentru fiecare lucrare de laborator.

Notă: Actualizarea site-ului se face saptamnal.

26

.04

.20

11

A

plic

atii

JAV

A

5

26

.04

.20

11

A

plic

atii

JAV

A

6

Curs introductiv

Aplicații Java

Tipuri de programare

Programare nestructurată - executarea secvenţială a tuturor comenzilor dintr-un program •dimensiune şi complexitate redusă •dificil de întreţinut şi modificat •permite realizarea de programe de

complexitate mică/medie • exemple: BASIC, Q-BASIC, COBOL,

Fortran, ş.a.

26

.04

.20

11

A

plic

atii

JAV

A

7

Tipuri de programare

Programare structurată – organizare şi structurare mai bună a programelor

• mai uşor de modificat şi extins

• permite reutilizarea codului scris – folosirea funcţiilor şi/sau procedurilor

• programe de complexitate medie/mare

• permite lucrul în echipă la un program

• exemple: Pascal, C, ş.a.

26

.04

.20

11

A

plic

atii

JAV

A

8

Tipuri de programare Programare orientată pe obiecte – modelează obiecte din lumea reală • introduce conceptul de obiect = contopirea

datelor cu codul • întreţinere şi modificare mai uşoară a

programelor • permite realizarea de programe mult mai

complexe • simplifica lucrul în echipă la un program –

fiecare membru al echipei are câte o parte de program

• exemple: C++, Java, ş.a.

26

.04

.20

11

A

plic

atii

JAV

A

9

Programarea orientată pe obiecte

• modelarea obiectelor reale, transpuse în limbajul de programare - clase

• contopirea datelor cu codul – proprietăţile şi metodele coexistă

• uşurează realizarea de programe complexe

• uşurează lucrul în echipe, datorită controlului mai bun asupra secţiunilor programului

• modularizare mai bună – permite o întreţinere mai uşoară a programelor

• reutilizare mai bună a codului – folosirea moştenirii

• permite ascunderea detaliilor de implementare – public, private, protected

26

.04

.20

11

A

plic

atii

JAV

A

10

Principiile POO

Încapsularea – modelarea obiectelor din lumea reală • datele (proprietăţile) şi metodele (acţiunile)

coexistă în clase • ascunderea detaliilor de implementare (date şi

metode private) • localizare mai bună a erorilor • modularizarea mai eficientă a programului • simplifică depanarea şi extinderea ulterioară a

programului

26

.04

.20

11

A

plic

atii

JAV

A

11

Principiile POO

Moştenirea – extinderea unei clase cu noi proprietăţi şi funcţionalităţi, dintr-o clasă existentă

• clasa extinsă va moşteni caracteristicile clasei moştenite

• o clasă se poate deriva de oricâte ori

• clasele derivate trebuie să fie asemănătoare, dar să aibă totuşi trăsături distinctive

26

.04

.20

11

A

plic

atii

JAV

A

12

Principiile POO

Polimorfismul - o metodă poate avea forme diferite, în clase diferite

• metodele respective pot să fie total diferite ca şi funcţionalitate

26

.04

.20

11

A

plic

atii

JAV

A

13

Java - proprietăţi

• limbaj de programare de nivel înalt

•dezvoltat de firma Sun Microsystems

• folosit în special datorită portabilităţii sale

26

.04

.20

11

A

plic

atii

JAV

A

14

Caracteristici • orientat exclusiv pe obiecte

• portabilitate mare

• sintaxă preluată din limbajul C++

• execuţia propriu-zisă este făcută de o maşină virtuală (Java Virtual Machine – JVM)

• pune la dispoziţia utilizatorului o bibliotecă de clase foarte puternică şi complexă

26

.04

.20

11

A

plic

atii

JAV

A

15

Distribuţii Java • Java Developement Kit (JDK) • compilatorul Java (javac) • maşina virtuală Java (Java Virtual Machine – JVM) • debugger (jdb) • viewer de applet-uri (appletviewer) • alte utilitare

• Java Runtime Environment (JRE) • maşina virtuală Java (JVM) • viewer-ul de applet-uri (appletviewer) - stand-

alone sau într-un browser

26

.04

.20

11

A

plic

atii

JAV

A

16

Diferenţe faţă de limbajul C++

• structură pur obiectuală • nu există funcţii şi variabile globale • nu există structuri, enumerări şi uniuni

(struct, enum, union în C++)

• tip de date nativ boolean (true şi false) • tip de date nativ String – lucrul cu şiruri de

caractere

26

.04

.20

11

A

plic

atii

JAV

A

17

Diferenţe - continuare

• mecanisme pentru tratarea structurată a excepţiilor

• simplificarea structurării programelor

• permit un control mai bun asupra erorilor apărute în timpul rulării programului

• obiectele sunt instanţiate doar dinamic – folosind operatorul new

• nu există pointeri (nici către obiecte, nici către metode)

• obiectele se accesează prin referinţele returnate de operatorul new

26

.04

.20

11

A

plic

atii

JAV

A

18

Diferenţe - continuare

• nu suportă moştenire multiplă • se compensează prin existenţa interfeţelor

• obiectele alocate dinamic nu trebuie dezalocate explicit • dezalocarea se face explicit, de către un mecanism de garbage-

collection

• determină automat când un obiect nu mai este folosit (nu mai există referinţe către el)

• elimină necesitatea folosirii unui destructor

• mecanisme pentru programare concurentă - programe cu mai multe fire de execuţie care ruleaza în paralel

26

.04

.20

11

A

plic

atii

JAV

A

19

Noţiunile de “clasă” şi “obiect”

• clasa – nou tip de date, creat de programator • caracteristicile clasei sunt descrise prin folosirea celelaltor

tipuri de date

• permite folosirea şi de metode, pe lânga date

• membrii pot avea mai multe atribute de accesibilitate

• obiect – instanţiere a unei clase • se pot instanţia doar dinamic (folosind operatorul new)

• fiecare obiect are o zonă de memorie proprie

26

.04

.20

11

A

plic

atii

JAV

A

20

Tipuri de date folosite în Java • char

• byte

• short

• int

• long

• float

• double

• void

• boolean (cu valorile true şi false)

• String

• class, interface, array

26

.04

.20

11

A

plic

atii

JAV

A

21

Compilarea, executarea

• compilarea unui program Java: • se realizează cu comanda:

javac nume_fişier.java

• fişierul trebuie să aibă acelaşi nume cu clasa principală (cea care conţine funcţia main)

• rezultă unul sau mai multe fişiere cu extensia .class

• rularea(executia) unui program Java: • se realizează cu comanda:

java nume_fişier

• fişierul executat trebuie să fie cel care conţine funcţia main

26

.04

.20

11

A

plic

atii

JAV

A

22

Exemplu de program Java

public class PrimulProgram

{

public static void main (String[ ] args)

{

System.out.println ("Primul program in Java!");

}

}

Execuţia programului începe de la funcţia main

• trebuie să fie de tip public

• static -> nu există un obiect instanţiat din clasa respectivă

• tipul returnat: void

• se poate lansa în execuţie folosind parametri (args)

26

.04

.20

11

A

plic

atii

JAV

A

23

Exemplu de program – instantierea unui obiect class Student { private String nume; private int varsta; public Student (String nume, int v) { this.nume = nume; this.varsta = v; } public void afisare () { System.out.println (“Dl. “+ nume + “ are “ + varsta + “ ani.”); } }

26

.04

.20

11

A

plic

atii

JAV

A

24

Exemplu de program – instantierea unui obiect - continuare public class ExempluStudent { public static void main (String[] args) { Student st = new Student ("Andrei", 25); st.afisare (); } } • folosirea membrilor private şi public • folosirea pointer-ului this • alocare dinamică de memorie pentru obiectul

instanţiat • apelarea implicită a constructorului • apelarea funcţiei afisare • apariţia garbage-collector-ului

26

.04

.20

11

A

plic

atii

JAV

A

25

Exemplu de program – introducerea de la tastatură public class IntroducereStudent { public static void main (String[ ] args) throws IOException { System.out.print ("Introduceti numele studentului: "); BufferedReader b1 = new BufferedReader (new

InputStreamReader (System.in)); String nume = b1.readLine (); System.out.print ("Introduceti varsta studentului: "); BufferedReader b2 = new BufferedReader (new

InputStreamReader (System.in)); String varsta_str = b2.readLine (); int varsta = Integer.parseInt(varsta_str); Student st = new Student (nume, varsta); st.afisare (); } }

26

.04

.20

11

A

plic

atii

JAV

A

26

Exemplu de moştenire

• se realizează folosind cuvântul cheie extends

• sunt preluate caracteristicile public şi protected din clasa de bază

• exemplu de moştenire:

26

.04

.20

11

A

plic

atii

JAV

A

27

Persoana

- nume

- varsta

Student

- an_studiu

- bursa

Angajat

- salariu

- vechime

Moştenire - continuare

class Student extends persoana { private int an_studiu; private float bursa; public Student (int an_studiu, float bursa) { this.an_studiu = an_studiu; this.bursa = bursa; } public void afisare () { super.afisare(); System.out.println (“Studentul "+ nume + " are " + varsta + "

ani si are bursa in valoare de “ + bursa); } }

26

.04

.20

11

A

plic

atii

JAV

A

28

Elemente introductive ale limbajului

1. Tipuri de programe implementate de Java 2. Etapele dezvoltării unei aplicaţii Java 3. Structura unei aplicaţii Java

26

.04

.20

11

A

plic

atii

JAV

A

29

Tipuri de programe implementate de Java

Cu ajutorul limbajului Java se pot dezvolta doua tipuri de programe:

1. Programe Java care se executa individual

prin intermediul unui interpretor Java. Acestea se incadreaza in programele “clasice”

scrise in diverse limbaje de programare, cum ar fi: C/C++, Pascal, etc.

Acest tip de programe Java sunt denumite aplicatii.

26

.04

.20

11

A

plic

atii

JAV

A

30

Tipuri de programe implementate de Java

2. Programe Java care se executa in interiorul unui navigator Internet, dintr-un document HTML.

Acest tip de programe Java sunt denumite applet-uri.

26

.04

.20

11

A

plic

atii

JAV

A

31

Elemente introductive ale limbajului

1. Tipuri de programe implementate de Java 2. Etapele dezvoltării unei aplicaţii Java 3. Structura unei aplicaţii Java

26

.04

.20

11

A

plic

atii

JAV

A

32

Etapele dezvoltării unei aplicatii Java

1. Editarea setului de instructiuni de programare cu ajutorul unui editor de texte.

In acest fel este creat un fisier sursa, care are extensia .java.

2. Compilarea programului

Pentru aceasta operatie se lanseaza in executie un program special, denumit compilator Java.

Compilatorul analizeaza textul sursa al programului din punct de vedere sintactic, semnaland eventualele erori.

26

.04

.20

11

A

plic

atii

JAV

A

33

Etapele dezvoltării unei aplicatii Java

• Daca programul nu contine erori sintactice, compilatorul traduce acest program in codul masina pentru masina virtuala Java (un fel de calculator intr-un alt calculator).

• Rezultatul compilarii este unul sau mai multe fisiere de tip “bytecode”- o secventa de instructiuni de asamblare pentru masina virtuala Java.

• Fisierul “bytecode” nu depinde de masina gazda si nici de sistemul de operare pe care va fi executat programul.

• Masina virtuala mai este cunoscuta si ca interpretor Java sau executor (runtime) Java.

• Extensia fisierului “bytecode” rezultat in urma compilarii are extensia .class.

26

.04

.20

11

A

plic

atii

JAV

A

34

Etapele dezvoltării unei aplicatii Java

3. Conversia (transformarea), de catre interpretorul Java, a instructiunilor “bytecode” in instructiuni inteligibile masinii gazda care apoi sunt executate.

• Conversia are loc la lansarea executiei si anume instructiune cu instructiune.

• In acest mod este asigurata portabilitatea si independenta de platforma.

• Un dezavantaj poate fi considerat timpul mai mare de executie.

26

.04

.20

11

A

plic

atii

JAV

A

35

Procesul de compilare si executie a unei aplicatii Java

26

.04

.20

11

A

plic

atii

JAV

A

36

Cu succes

?

Scrierea instructiunilor programului-sursa (.java)

Compilarea programului-sursa cu ajutorul compilatorului Java

Cu succes

?

Modificarea instructiunilor programului

Da

Nu

Nu

Executia fiecarei instructiuni cu ajutorul interpretorului Java (.class)

Da

Conversia fiecarei instructiuni “bytecode” in instructiune executabila pe masina gazda cu ajutorul interpretorului Java (.class)

Elemente introductive ale limbajului

1. Tipuri de programe implementate de Java 2. Etapele dezvoltării unei aplicaţii Java 3. Structura unei aplicaţii Java

26

.04

.20

11

A

plic

atii

JAV

A

37

Structura unei aplicații Java

• O aplicatie Java este compusa din una sau mai multe clase care interactioneaza intre ele prin intermediul metodelor.

• In grupul de clase, care formeaza o aplicatie Java, trebuie sa existe o clasa care sa contina o metoda statica avand numele main.

• Atunci cand se executa o aplicatie Java, masina virtuala va cauta si invoca automat metoda statica avand numele main.

26

.04

.20

11

A

plic

atii

JAV

A

38

Structura unei aplicații Java

Nota: • Metoda main poate fi considerata ca fiind echivalentul

Java a functiei main din C/C++. • Cel mai simplu program Java (care nu face nimic) arata

astfel: class NuExecutaNimic { public static void main (String [ ] args) { } } Nota: • Tipul parametrilor metodei (functiei) main cat si tipul

metodei, static void, sunt obligatorii.

26

.04

.20

11

A

plic

atii

JAV

A

39

Exemple de programe simple

1. Sa se rezolve ecuatia: ax+b=0, cu a,b nr. reale. import java.io.*; public class exemplu1 { public static void main (String args[]) throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String s1 = br.readLine(); double a = Double.parseDouble(s1); System.out.println("numarul a = "+s1); String s2 = br.readLine(); double b = Double.parseDouble(s2); System.out.println("numarul b = "+s2);

26

.04

.20

11

A

plic

atii

JAV

A

40

Exemple de programe simple

if ( a == 0 )

if(b==0) System.out.println ("Infinitate de solutii !");

else System.out.println ("Nu are solutie !");

else

{ System.out.print("Solutia x = "); System.out.println (-b/a); }

}

}

26

.04

.20

11

A

plic

atii

JAV

A

41

Exemple de programe simple

2. Se citeste un numar natural n. Sa se calculeze 1+2+ . . . + n.

import java.io.*;

public class exemplu2

{

public static void main (String args[]) throws IOException

{

InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);

System.out.println("numarul n = ");

String s1 = br.readLine();

int n = Integer.parseInt(s1);

26

.04

.20

11

A

plic

atii

JAV

A

42

Exemple de programe simple

int s=0, i;

for(i=1; i<=n; i++)

s+=i;

System.out.println ("Suma este = "+s);

}

}

26

.04

.20

11

A

plic

atii

JAV

A

43

Întrebări?

26

.04

.20

11

A

plic

atii

JAV

A

44