Download - Java Curs1

Transcript
Page 1: 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

Page 2: Java Curs1

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

Page 3: Java Curs1

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

Page 4: Java Curs1

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

Page 5: Java Curs1

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

Page 6: Java Curs1

26

.04

.20

11

A

plic

atii

JAV

A

6

Curs introductiv

Aplicații Java

Page 7: Java Curs1

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

Page 8: Java Curs1

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

Page 9: Java Curs1

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

Page 10: Java Curs1

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

Page 11: Java Curs1

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

Page 12: Java Curs1

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

Page 13: Java Curs1

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

Page 14: Java Curs1

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

Page 15: Java Curs1

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

Page 16: Java Curs1

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

Page 17: Java Curs1

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

Page 18: Java Curs1

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

Page 19: Java Curs1

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

Page 20: Java Curs1

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

Page 21: Java Curs1

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

Page 22: Java Curs1

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

Page 23: Java Curs1

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

Page 24: Java Curs1

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

Page 25: Java Curs1

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

Page 26: Java Curs1

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

Page 27: Java Curs1

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

Page 28: Java Curs1

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

Page 29: Java Curs1

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

Page 30: Java Curs1

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

Page 31: Java Curs1

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

Page 32: Java Curs1

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

Page 33: Java Curs1

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

Page 34: Java Curs1

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

Page 35: Java Curs1

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

Page 36: Java Curs1

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)

Page 37: Java Curs1

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

Page 38: Java Curs1

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

Page 39: Java Curs1

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

Page 40: Java Curs1

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

Page 41: Java Curs1

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

Page 42: Java Curs1

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

Page 43: Java Curs1

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

Page 44: Java Curs1

Întrebări?

26

.04

.20

11

A

plic

atii

JAV

A

44