This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
laboratoare:recapitulare [2014/01/05 23:06] Adriana Draghici created |
laboratoare:recapitulare [2018/10/07 16:51] (current) Laurentiu Stamate |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | 1) Se considera urmatoarea declaratie de clasa. Ce se va intampla la compilarea si executarea ei? | + | =Recapitulare= |
+ | |||
+ | == Obiective == | ||
+ | Scopul acestui laborator îl constă recapitularea principalelor noțiuni de OOP și Java prezentate în cadrul laboratoarelor. | ||
+ | |||
+ | [[..:administrativ:regulament#test | Testul]] final va verifica aceste concepte prin întrebări grilă similare celor date ca exemplu în acest laborator (nu toate exercțiile din laborator sunt însă conforme cu formatul testului). | ||
+ | |||
+ | == Exerciții == | ||
+ | |||
+ | 1) Se consideră următoarea declarație de clasă. Ce se va întâmpla la compilarea și executarea ei? | ||
<code java> | <code java> | ||
Line 26: | Line 35: | ||
</code> | </code> | ||
- | * A. Se va afisa de 2 ori mesajul ''"This is a static method"'' si de doua ori ''"This is a private method"'' | + | * A. Se va afișa de 2 ori mesajul ''"This is a static method"'' și de două ori ''"This is a private method"'' |
- | * B. Se va genera o eroare de compilare la ultima linie din ''main()'' (''Core.staticMethod()'') | + | * B. Se va genera o eroare de compilare la ultima linie din ''main()'' (''Core.staticMethod()'') |
- | * C. Se va genera o eroare de compilare la linia ''this.privateMethod()'' | + | * C. Se va genera o eroare de compilare la linia ''this.privateMethod()'' |
- | * D. Se va arunca o exceptie la executarea liniei ''Instance.staticMethod()'' | + | * D. Se va arunca o excepție la executarea liniei ''Instance.staticMethod()'' |
- | 2) Se considera urmatoarea situatie. Cate versiuni distincte ale variabilei ''x'' sunt accesibile in (*)? | ||
+ | 2) Se consideră următoarea situație. Câte versiuni distincte ale variabilei ''x'' sunt accesibile în (*)? | ||
+ | | ||
<code java> | <code java> | ||
class Outer | class Outer | ||
Line 50: | Line 59: | ||
} | } | ||
</code> | </code> | ||
- | * A. Una singura | + | * A. Una singură |
* B. Doua | * B. Doua | ||
* C. Trei | * C. Trei | ||
* D. Patru | * D. Patru | ||
- | /* | ||
- | #: '''R''': 4 | ||
- | #:* parametrul metodei: ''x'' | ||
- | #:* variabila membru din ''Inner'': ''this.x'' | ||
- | #:* variabila membru din ''Outer'', obtinuta prin '''mostenire''': ''super.x'' | ||
- | #:* variabila membru din ''Outer'', obtinuta prin '''continere''' (clasa exterioara): ''Outer.this.x'' | ||
- | */ | ||
- | 3) Se considera urmatoarea structura de clase. La rularea metodei ''printAll()'', ce valori se vor afisa si in ce ordine (ignorati faptul ca acestea apar pe linii diferite)? | + | 3) Se consideră următoarea structură de clase. La rularea metodei ''printAll()'', ce valori se vor afișa și în ce ordine (ignorați faptul că acestea apar pe linii diferite)? |
<code java> | <code java> | ||
Line 101: | Line 103: | ||
- | 4) In urmatorul exemplu, ce se va afisa (ignorati faptul ca mesajele apar pe linii diferite)? | + | 4) În următorul exemplu, ce se va afișa (ignorați faptul că mesajele apar pe linii diferite)? |
<code java> | <code java> | ||
Line 140: | Line 142: | ||
- | 5) In fisierul "CarData.java" exista urmatoarele declaratii: | + | 5) În fișierul "LuxuryCar.java" există următoarele declarații: |
<code java> | <code java> | ||
- | class Car | + | class Car { |
- | { | + | private String name = "Some Car"; |
- | private String Name = "Some Car"; | + | |
} | } | ||
- | public class LuxuryCar extends Car | + | public class LuxuryCar extends Car { |
- | { | + | public LuxuryCar() { |
- | public LuxuryCar() | + | name = "Luxury Car"; |
- | { | + | |
- | Name = "Luxury Car"; | + | |
} | } | ||
} | } | ||
- | class Main | + | class Main { |
- | { | + | |
// Application Entry Point | // Application Entry Point | ||
- | public static void main(String[] Params) | + | public static void main(String[] params) { |
- | { | + | |
LuxuryCar instance = new Car(); | LuxuryCar instance = new Car(); | ||
} | } | ||
} | } | ||
</code> | </code> | ||
- | Ce se intampla in momentul in care incercam sa compilam continutul acestui fisier? | + | Ce se întâmplă în momentul în care încercăm să compilăm conținutul acestui fișier? |
- | * A. Compilarea decurge fara probleme | + | * A. Compilarea decurge fără probleme |
- | * B. Compilarea esueaza cu 3 erori | + | * B. Compilarea eșuează cu 3 erori |
- | * C. Compilarea esueaza cu 1 eroare | + | * C. Compilarea eșuează cu 1 eroare |
- | * D. Compilarea esueaza cu 2 erori | + | * D. Compilarea eșuează cu 2 erori |
- | 6) Fie urmatoarea secventa de cod. Ce se intampla la executia ei? | + | 6) Fie următoarea secvență de cod. Ce se întâmplă la execuția ei? |
<code java> | <code java> | ||
import java.util.*; | import java.util.*; | ||
- | class Main | + | public class Main |
{ | { | ||
private void process() | private void process() | ||
Line 202: | Line 199: | ||
} | } | ||
</code> | </code> | ||
- | * A. Se va afisa ''"! Stack overflow !"'' | + | * A. Se va afișa ''"! Stack overflow !"'' |
- | * B. Se va afisa ''5'' | + | * B. Se va afișa ''5'' |
- | * C. Aplicatia se va incheia normal (fara exceptii), fara a afisa nici un mesaj | + | * C. Aplicația se va încheia normal (fără excepții), fără a afișa nici un mesaj |
- | * D. Se va arunca o exceptie de tipul ''IndexOutOfBoundsException'', care nu va fi prinsa | + | * D. Se va arunca o excepție de tipul ''IndexOutOfBoundsException'', care nu va fi prinsă |
- | 7) Ce se intampla la compilarea si executarea urmatoarei aplicatii Java? | + | 7) Ce se întâmplă la compilarea și executarea următoarei aplicații Java? |
<code java> | <code java> | ||
- | class Main | + | public class Main |
{ | { | ||
private static Main Instance = new Main(); | private static Main Instance = new Main(); | ||
Line 232: | Line 229: | ||
} | } | ||
</code> | </code> | ||
- | * A. Nu apar erori sau exceptii, nici la compilare nici la executie | + | * A. Nu apar erori sau excepții, nici la compilare nici la execuție |
- | * B. Apare o eroare la compilare, deoarece nu se poate crea o instanta a clasei Main prin ''new Main()'' | + | * B. Apare o eroare la compilare, deoarece nu se poate crea o instanță a clasei Main prin ''new Main()'' |
- | * C. Apare o eroare la compilare, deoarece linia ''new Main().print();'' nu este corecta | + | * C. Apare o eroare la compilare, deoarece linia ''new Main().print();'' nu este corectă |
- | * D. Apare o eroare la compilare, deoarece variabila ''Instance'' nu este accesibila la nivelul functiei ''getInstance()'' | + | * D. Apare o eroare la compilare, deoarece variabila ''Instance'' nu este accesibilă la nivelul funcției ''getInstance()'' |
- | 8) Ce va afisa instructiunea ''new Child(2)''? <code java> | + | 8) Ce va afișa instrucțiunea ''new Child(2)''? |
+ | <code java> | ||
class Parent { | class Parent { | ||
public Parent() { | public Parent() { | ||
Line 255: | Line 253: | ||
} | } | ||
</code> | </code> | ||
- | /* | ||
- | #: '''R''': ''Parent 0 Child 1'' | ||
- | */ | ||
- | 9) Fie urmatoarea secventa: <code java> | + | |
+ | 9) Fie următoarea secvență: <code java> | ||
class C {} | class C {} | ||
Line 273: | Line 269: | ||
void f(D d) {...} | void f(D d) {...} | ||
} | } | ||
- | </code> Care implementare a metodei ''f'' va fi utilizata in cadrul invocarii de mai jos: <code java> | + | </code> |
+ | Care implementare a metodei ''f'' va fi utilizată în cadrul invocării de mai jos: | ||
+ | <code java> | ||
A a = new B(); | A a = new B(); | ||
C c = new D(); | C c = new D(); | ||
a.f(c); | a.f(c); | ||
</code> | </code> | ||
- | /* | + | |
- | #: '''R''': ''f(C)'' din ''B'': | + | 10) Adăugați un cuvânt cheie la următorul antet de clasă, astfel încât declarația să devină contradictorie: |
- | #:* pentru '''supradefinire''' alegerea se face '''dinamic''' (''B'') | + | <code java> |
- | #:* pentru '''supraincarcare''' alegerea se face '''static''' (''C'') | + | abstract class C |
- | */ | + | </code> |
- | 10) Adaugati un cuvant cheie la urmatorul antet de clasa, astfel incat declaratia sa devina contradictorie: <code java> | + | |
- | abstract class C | + | 11) Întrebarea de mai sus, aplicată în cazul metodei: |
- | </code> | + | <code java> |
- | /* | + | |
- | #: '''R''': ''final'' | + | |
- | */ | + | |
- | 11) Intrebarea de mai sus, aplicata in cazul metodei: <code java> | + | |
abstract void f() | abstract void f() | ||
</code> | </code> | ||
- | /* | + | |
- | #: '''R''': ''final'' sau ''private'' | + | == Resurse == |
- | */ | + | * <html><a class="media mediafile mf_pdf" href="/poo/laboratoare/recapitulare?do=export_pdf">PDF laborator</a></html> |
+ | |||
+ | == Linkuri utile == | ||
+ | |||
+ | - Kathy Sierra, Bert Bates. //SCJP Sun Certified Programmer for Java™ 6 - Study Guide//. ([[https://iamgodsom.files.wordpress.com/2014/08/scjp-sun-certified-programmer-for-java-6-0071591060.pdf |available online]]) - o carte cu exerciții grilă și sumar pentru fiecare capitol, e.g. OOP Concepts, Inner Classes, Collections etc. | ||
+ | - [[:test:index | Subiecte și rezolvări teste grilă]] |