Top Banner
Curs Java C1.Notiuni introductive C1.1. Limbajul nativ al masinii The Fetch and Execute Cycle Machine language – set de instructiuni (set secvente binare) executate direct de catre CPU (Control Processing Unit) CPU – executa doar programele stocate in Main Memory – RAM – Random Access Memory (contine addrese si date - instructiuni) CPU CU - Control Unit IR - Instruction Register MDR – Memory Data Register PC – Program Counter MAR – Memory Adress Register ALU – Arithmetic Logical Unit ACC - Accumulator Data Bus Address Bus Etapele ciclului fetch-execute: 1. PC pune adresa urmatoarei instructiuni in MAR 2. MAR pune adresa instructiunii pe Address Bus 3. Adress Bus gaseste instructiunea de la acea adresa de memorie 4. Instructiunea este pusa pe Data Bus 5. Instructiunea este pusa in MDR 6. Instructiunea intra in IR 7. IR decodeaza instructiunea si o executa 8. Se trece la urmatoarea instructiune Cache RAM 00101110 . . . . . .
29

Curs Java

Sep 14, 2015

Download

Documents

Nicu Scrob

Curs Java
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

Curs Java

C1.Notiuni introductiveC1.1. Limbajul nativ al masiniiThe Fetch and Execute CycleMachine language set de instructiuni (set secvente binare) executate direct de catre CPU (Control Processing Unit)

Cache

CPU executa doar programele stocate in Main Memory RAM Random Access Memory (contine addrese si date - instructiuni)CPU

CU - Control Unit

IR - Instruction Register

MDR Memory Data Register

PC Program Counter

MAR Memory Adress Register

ALU Arithmetic Logical Unit

ACC - Accumulator

RAM

00101110

.

.

.

.

.

.

Data BusAddress Bus

Etapele ciclului fetch-execute:1. PC pune adresa urmatoarei instructiuni in MAR2. MAR pune adresa instructiunii pe Address Bus3. Adress Bus gaseste instructiunea de la acea adresa de memorie4. Instructiunea este pusa pe Data Bus5. Instructiunea este pusa in MDR6. Instructiunea intra in IR7. IR decodeaza instructiunea si o executa8. Se trece la urmatoarea instructiune

C1.2. Limbajul virtual al masinii

IDE - Integrated Development Kit Eclipsse - NetBeansJDK - Java Development Kit = JRE + javac compiler + development toolsJRE - Java Runtime Environment = JIT + JVM + librariesJVM - Java Virtual MachineJIT - Just In Time CompilerInterpreter JITJavac Compiler

Source code Bytecode Machine code (Virtual Machine Code) .java .class

Compiler:- executa tot programul odata- transforma codul sursa al aplicatiilor in bytecode

Interpreter:- executa programul instructiune cu instructiune- transforma bytcode in cod masina

Pentru ca bytecode sa poata fi executat pe un anumit calculator acesta trebuie sa aiba instalata o masina virtuala Java.Ca si aplicatie un soft compiler este mai mare si greu de implementat decat un soft interpreter.Caracteristici limbaj Java:- elimina supraincarcarea operatorilor (posibilitatea operatorilor de a opera asupra unor noi tipuri de date introduse de utilizator)- mostenire simpla - o clasa poate avea doar o clasa parinte (superclasa)- renuntarea la pointeri- alocarea automata a memoriei - eliminarea pierderilor de memorie - garbage collector- neutralitate ahitecturala - aplicatiile Java nu depind de arhitectura masinii pe care ruleaza- portabilitate - obtinuta prin compilare si interpretare- orientat pe obiecte

Platforme Java JDK:- J2SE (Standard Edition) - aplicatii independente si appleturi- J2ME (Micro Edition) - aplicatii dispozitive mobile- J2EE (Enterprise Edition) - aplicatii complexe, servleturi

O subrutina reprezinta un set de instructiuni grupate sub un nume si care efectueaza anumite sarcini.Un obiect in Java contine date si subrutine.O clasa in Java este o colectie de obiecte cu acelasi tip de date si care raspund la fel la mesaje (apeluri de subrutine) de acelasi fel.Polimorfism obiecte diferite raspund diferit la aceleasi mesaje.Definitia unei aplicatii o clasa principala care contine subrutina Main.Clasele pot fi asadar aplicatii daca contin aceasta subrutina, in caz contrar sunt doar simple clase. Este recomandat ca numele aplicatiei sa fie acelasi cu numele clasei principale.

Subrutina MainPublic static void main (string [] args){}Subrutina main poate apela alte subrutine din aceeasi clasa, sau din clase diferite.

Clasa principala care defineste o aplicatiePublic class numeAplicatie{Public static void main (string [] args){}}

Daca aplicatia contine mai multe fisiere cu clase diferite acestea se vor salva avand extensia .javaCompilarea se face cu compilatorul javac apelat pentru fisierul ce contine clasa principala. Va rezulta un fisier cu extensia .class ce contine bytecode.Interpretare/rularea aplicatiei se face cu interpretorul java pentru fisierul bytecode.

EX: Save as: numeAplicatie.javaCompile: javac numeAplicatie.java (rezulta fisier.class)Interpreter/Run: java numeAplicatie (fara extensia class)

CLI Command Line InterfaceGUI Graphic User Interface

C1.3.Structura lexicala a limbajuluiSetul Unicode = ASCII(256)+\uxxxx - este folosit de limbajul Javaxxxx-codul caracterului

1.Cuvinte cheie cuvinte rezervateNu pot fi folosite ca nume de clase, interfete, variabile sau metode.True, false, null nu sunt cuvinte rezervate dar nici ele nu pot fi folosite ca si nume in aplicatiipublicbyteifimport

privateintelsepackage

protectedshortforinterface

defaultlongwhileclass

finaldoubledoextends

abstractfloatswitchimplements

strictfpbooleancaseinstanceof

synchronizedcharbreakfinally

nativeconst*continuevoid

transientgoto*trynew

volatilethrowscatchthis

staticenumreturnsuper

2.Identificatori secvente litere si cifre incepand cu o litera

3.Separatori: (){}[] ;,.

4.Literali valori constante de tip primitiv atribuite variabilelor numerici, char, boolean siruri de charactere.

5.Comentarii: // pe o singura linie/* */pe mai multe linii /** */ pe mai multe linii, textul este mutat automat in documentatia aplicatiei de catre generatorul de documentatie javadoc

6.OperatoriAtribuireasimpla: =compusa: += -= *= /= %= &= |= ^= == Ex: (x+=y x=x+y)Operatori matematici + - / * % ++ --Operatori incrementare, decrementare++x preincrementarex++ postincrementare--y predecrementarey-- postdecrementareOperatori logici &&(and), ||(or), !(not) pt booleanOperatori relationali >Operatorul + pentru siruri de caractereOperatorul conditionalexpresie booleana ? expresie1 : expresie2Ex: n=(x==y) ? x : yOperatorul conversieEx: char a=(char)10; int 10 to chardouble.Parsedouble(3.14); string 3.14 to double

C1.3.Tipuri de dateAspecte de baza ale programarii: date si instructiuni.Pentru data exista conceptele de variabila si tip.Pentru instructiuni exista conceptele de control si metode(subrutine).

Variabila este o referinta la o adresa de memorie, iar data continuta de aceasta adresa poate avea un tip. Alocarea memoriei in Java se face automat odata cu declararea variabilei.Datele indicate prin variabile pot fi de tip primitiv (numerice, char, boolean, siruri de charactere) sau de tip referinta (vectori, clase, interfete).Ex: int x=0; numele x reprezinta locul unde este stocata valoarea 0 care este de tip integer.

Tipuri de date primitive- numericeinteger: byte(8biti), short(16biti), int(32biti), long(64biti) - Lreal: float(32biti), double(64biti) f,F,d,D,(x,y), (xey)- char(16biti): A charactere Unicode- boolean: true, false- siruri de charactere: Ana, - sirul vid

Toate tipurile primitive de date sunt clase.1 bit=o sau 1; 1 Byte= 8 biti;

C1.3.1.Variabile de tip primitivDeclararea variabilelor: tip numeVariabila;Initializare: tip numeVariabila=expresie; expresie - se refera la o data sau orice calculeaza o data.Sau: tip numeVariabila1=expresie, numeVariabila2=expresie;

Ex: final double PI=3.14; int x;int x=0;int x=0, y=0;char initialaNume=A;string numePersoana=Ana;

Constantele se scriu cu litere mari si au sufixul final, iar variabilele se scriu cu prima litera mica, iar daca contin mai multe cuvinte primul se scrie cu prima litera mica iar celalalte cu prima litera mare.

Variabile:membre declarate in interiorul clasei vizibile pentru subrutinele acelei clase cat si pentru alte clase in functie de nivelul de acceslocale declarate intr-o subrutina vizibile doar in subrutina respectivalocale declarate intr-un boc de cod vizibile doar in blocul respectivParametrii subrutinelor sunt vizibili doar in subrutinele respective.

C3.Controlul executiei si subrutineC3.1.Controlul executiei

while (expresie booleana) {...}

if (expresie booleana) {...}else {...}

do {...} while (expresie booleana);

for ( initializare; expresie booleana; pas iteratie ) {...}

switch (expresie) {case valoare1:...break;case valoare2:...break;...case valoaren:...break;default: // optional default case...}

SWITCH - doar pentru variabile de tip primitiv

try {...}catch ( numeclasaexceptie numevaloare ) {...}

Alte instructiuni:Break - paraseste fortat corpul unei structuri repetitiveContinue - termina fortat iteratia curenta a unui ciclu si trece la urmatoarea iteratieReturn (valoare) - termina o metoda si eventual returneaza o valoare

numeEticheta : - defineste o eticheta

Ex:while(){if () continue numeEtichetaif () break numeEticheta}

C4.Variabile de tip referintaC4.1.VectoriDeclarare: tip numeVector []; tip [] numeVector;Instantiere(alocare de memorie): numeVector [ ]= new tip [nrelemente];D+I: tip numeVector [ ]= new tip [nrelemente];Optional initializare: Ex: int x [ ] = { 1, 8, 27, 64, 125, 216, 343 };Declararea unui vector nu implica si alocarea memoriei. Instantierea lui se face prin operatorul new.

Tablouri multidimensionaletip matrice[] [] = new tip [nrlinii] [nrcoloane]

Dimensiunea unui vector: cu ajutorul variabilei lengthEx: int x [] = new int [5];int m [] [] = new int [5] [10];x.length=5m[0]=10

Copierea vectorilor: element cu element sau cu metoda system.arraycopyEx: int a [] = {1,2,3,4}; int b [] = new int [4];I: for (i=0; i