Documente Academic
Documente Profesional
Documente Cultură
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
Cache
IR - Instruction Register
MDR Memory Data Register
PC Program Counter
MAR Memory Adress Register
ALU Arithmetic Logical Unit
ACC - Accumulator
Data Bus
Address Bus
RAM
00101110
.
.
.
.
.
.
Interpreter
Source code
Bytecode
Machine code
.class
Compiler:
- executa tot programul odata
- transforma codul sursa al aplicatiilor in bytecode
Interpreter:
- executa programul instructiune cu instructiune
- transforma bytcode in cod masina
Subrutina Main
}
Subrutina main poate apela alte subrutine din aceeasi clasa, sau din clase diferite.
Daca aplicatia contine mai multe fisiere cu clase diferite acestea se vor salva avand
extensia .java
Compilarea 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:
byte
int
short
long
double
float
boolean
char
const*
goto*
throws
enum
if
else
for
while
do
switch
case
break
continue
try
catch
return
import
package
interface
class
extends
implements
instanceof
finally
void
new
this
super
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, textul este mutat automat in documentatia aplicatiei de
catre generatorul de documentatie javadoc
6.Operatori
Atribuirea
simpla: =
compusa: +=
-=
*=
/=
%=
&=
|=
^=
<<=
++
--
Operatori logici
Operatori relationali
Operatori pe biti
Operatori de translatie
Operatorul conditional
expresie booleana ? expresie1 : expresie2
Ex: n=(x==y) ? x : y
Operatorul conversie
Ex:
C1.3.Tipuri de date
>>==
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.
Ex:
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 acces
locale declarate intr-o subrutina vizibile doar in subrutina respectiva
locale declarate intr-un boc de cod vizibile doar in blocul respectiv
Parametrii subrutinelor sunt vizibili doar in subrutinele respective.
if (expresie booleana) {
...
}
else {
...
}
do {
...
} while (expresie booleana);
switch (expresie) {
case valoare1:
...
break;
case valoare2:
...
break;
.
.
.
case valoaren:
...
break;
default: // optional default case
...
}
try {
...
}
catch ( numeclasaexceptie numevaloare ) {
...
}
Alte instructiuni:
Break - paraseste fortat corpul unei structuri repetitive
Ex:
while(){
if () continue numeEticheta
if () break numeEticheta
}
Tablouri multidimensionale
tip matrice[] [] = new tip [nrlinii] [nrcoloane]
C4.2.Obiecte si clase
Obiecte
Declarare: numeClasa numeObiect;
Instantiere: numeObiect = new numeClasa();
Initializare: prin intermediul constructorilor clasei
D+I+I: numeClasa numeObiect = new numeClasa();
Ex:
public class caine extends animal {
string nume;
string rasa;
public caine (string s){
//model constructor1
nume=s;
rasa=necunoscuta;
public caine ( string numecaine, string rasacaine) {
//model constructor2
this.nume=numecaine
this.rasa=rasacaine
}
}
animal caine= new animal (nume,rasa);
this.nume - variabila de instanta - a obiectului
nume, rasa - parametrii constructorilor (pt primul tip deconstructor parametrul rasa este
necunoscut)
Folosirea obiectelor
Clase
Reprezinta alaturi de interfete o modalitate de a intoduce noi tipuri de date intr-o
aplicatie.
Declararea:
modificatori class numeclasa
extinde numeSuperclasa
implementeaza interfata{
}
Modificatorii de acces pot fi:
public - poate fi folosita de toate clasele indiferent de pachet
default - poate fi folosita doar de clasele din acelasi pachet
final - nu poate avea subclase
abstract - model pentru o serie de subclase, nu poate fi instantiata
strictfp - precizia calculelor cu nr reale este aceeasi pe orice platforma
Mostenire simpla - o clasa poate avea un singur parinte dar mai multi mostenitori
(subclase).
Corpul unei clase
Este format din:
- declararea si initializarea variabilelor membre - de clasa si de instanta(ale
obiectelor)
- declararea si implementarea metodelor membre - de clasa si de instanta
- declararea si implementarea constructorilor
- declararea unor clase imbiricate - interne
Tipul variabilelor de instanta al obiectelor este dat de clasa care cuprinde obiectele
respective.
Clasa este un tip.
class A {
int x=1;
A(int x) { this.x = x;}
}
class B extends A {
B() {super(2);}
B(int x) {super.x = x;}
}
Apelul explicit al unui constructor nu poate aparea decat intr-un alt constructor si trebuie
sa fie prima instructiune din constructorul respectiv.
Cu ajutorul constructorului se pot crea obiecte de tip clasa. Dupa definirea
constructorului se pot crea obiecte de tip clasa cu ajutorul operatorului new:
numeObiect = new numeClasa();
Syntaxa pentru declararea unui constructor:
modificatori numeClasa(parametri){
}
Constructorii sunt defapt subrutine speciale. Modificatorii pot fi: public, protected,
private, implicit.
Fiecare clasa are un set de constructori care se ocupa cu initializarea obiectelor nou
create. De exemplu, clasa Rectangle are urmatorii constructori:
public Rectangle()
public Rectangle(int latime, int inaltime)
public Rectangle(int x, int y, int latime, int inaltime)
public Rectangle(Point origine)
public Rectangle(Point origine, int latime, int inaltime)
public Rectangle(Point origine, Dimension dimensiune)
Desi o clasa poate avea mai multi constructori acestia trebuie sa difere prin lista de
argumente primite. De asemenea numele constructorilor trebuie sa fie acelasi cu
numele clasei. Constructorului implicit nu ii sunt atribuite argumente.
Declararea variabilelor
Variabilele membre ale unei clase se declara de obicei inaintea metodelor fiind vizibile
si in metodele respective. Variabilele locale declarate in metode sunt vizibile doar in
acele metode.
Declarare: modificatori tip numeVariabila = valoareinitiala
Modificatorii pot fi: public, private, protected, default, final (valoarea variabilei nu mai
poate fi schimbata - declarare constante), transient (serializarea obiectelor), volatile,
static (variabila de clasa).
Declararea si implementarea subrutinelor
Orice subrutina trebuie sa fie definita in interiorul unei clase.
Declararea unei subrutine:
modificatori tipreturnat numesubrutina (parametrii)
throws exception
{
...
}
public
protected
private
default
Aceeasi clasa
X
(doar prin
mostenire)
Apelarea subrutinelor:
numesubrutina (parametrii) - daca subrutina este in aceeasi clasa
numeclasa.numesubrutina (parametrii) - daca subrutina este din alta clasa
Tipreturnat poate fi:
class A {
void metoda() {
System.out.println("A: metoda fara parametru");
}
// Supraincarcare
Clase imbricate
Clase interne
Spre deosebire de clasele obisnuite, o clasa imbricata poate fi declarata statica
sau nu. O clasa imbricata nestatica se numeste clasa interna.
class ClasaDeAcoperire{
...
class ClasaInterna {
...
}
static class ClasaImbricataStatica {
...
}
}
Clasa Object