Post on 21-Oct-2015
description
transcript
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