I7#1 grA, Studia, WAT Informatyka, JTP - java


I termin zwykły: grupa A

(Punktacja: 10+12+10+8+10)

1. Podaj i krótko omów dwa sposoby przekazywania wartości parametrów podczas wywołania metody. Wyjaśnij jaki jest sposób przekazywania wartości parametrów w Javie.

Mamy przekazywanie przez wartosc (call by value) i przez referencje (call by reference). W Javie wystepuje przekazywanie przez wartosc, czyli operujemy na kopiach parametrow. Napisalem jeszcze co jest wiazane statycznie, a co dynamicznie. Wszystko bylo w wykladach. Jak sie rozkmini te przyklady, to powinno byc dobrze. Napisalem jeszcze, ze w Javie referencje jawnie nie wystepuja (Chmielewski cos o tym wspominal).

[wykład1] W Jawie wartości parametrów przekazywane są zgodnie z zasadą wywołania przez wartość (ang. call by value). Znaczy to tyle, ze podczas wykonania metody aktualne wartości jej parametrów są kopiowane do nowych zmiennych, a po jej

wykonaniu przywracane parametrom. W konsekwencji, metoda nie zmienia wartości swoich parametrów.

Istnieją zasadniczo dwa mechanizmy wiązania: statyczne (w czasie kompilacji) i dynamiczne (w czasie wykonania). W Javie atrybuty są wiązane statycznie, a metody dynamicznie zależnie od typu aktualnego parametru.

2. Zaimplementuj stos z metodami:

• push (Object o), która kładzie element na górę stosu;

• pop(), która zwraca element znajdujący się na górze stosu jednocześnie usuwając go.

///////////wersja 1

import java.util.Vector

public class Stack {

private Vector<Object> stack;

Stack();

public void push(Object A) {

this.stack.add(A);

};

public void pop() {

this.stack.remove(this.stack.length());

};

};

/* imho ta wersja jest niepoprawna, bo pop powinien zwracac zerowy element, a nie ten z konca vectora */

//////////////wersja 2

import java.util.LinkedList;

public class Stos {

private LinkedList<Object> st;

public Stos(){

st = new LinkedList<Object>();

}

public void push(Object a){

this.st.add(0, a);

}

public void pop(){

this.st.removeFirst();

}

}

///////////ulepszone rozw wersji 2

import java.util.LinkedList;

public class Stos {

private LinkedList<Object> st;

public Stos(){

st = new LinkedList<Object>();

}

public void push(Object a){

this.st.add(0, a);

}

public Object Pop{

Object a;

a=this.st.get(0);

this.st.removeFirst();

return a;

}

}

///////////wersja 3 
class Stos extends Stack 


///////////wersja 4 
class Stos extends LinkedList 

public void push(Object o) 

super.addFirst(o); 

public Object pop() 

return super.removeFirst(); 

3. Omów krótko zasadę podstawiania sformułowaną przez Barbarę Liskov.

Obiekt podklasy musi dac sie wykorzystac wszedzie tam, gdzie obiekt nadklasy. Wedlug mnie z tego wynika, ze podklasa musi implementowac wszystkie metody interfejsow, z ktorych dziedziczy i nie moze rzucac innych wyjatkow niz deklarowane w nadklasie. Zasada Liskov wyklucza tez po mojemu dziedziczenie wielobazowe. 

[wykład1] Idea dziedziczenia jest oparta na zasadzie podstawiania sformułowanej przez Barbarę Liskov: obiekt podklasy ma dawać się użyć wszędzie tam, gdzie może być użyty obiekt nadklasy.

4. Wyjaśnij, jak będzie działała metoda zawierająca następujący fragment jeśli wykonanie try spowoduje rzucenie wyjątku:

try {

. . . //execute code;

} catch (ExceptionX e) {

. . . //do something about it

} catch (ExceptionY e) {

. . . //do something about it

} catch (Exception e) {

. . . //do something about it

} finally {

. . .

}

[wykład2-15]Wykona sie pierwsza klauzula catch, ktora zlapie wyjatek. Finally wykona sie zawsze, bez wzgledu na to, czy wyjatek zostal zlapany, czy nie. 

jest to odpowiednik switch w C. w C default nie zawsze sie wykona

5. Omów krótko sytuację, w której klasa Thread nie wystarcza i musi być zastąpiona interfejsem Runnable. Przedstaw sposób używania tego interfejsu i obiektów klas ten interfejs implementujących.

Thread nie wystarcza, jak mamy juz jakas klase, ktora dziedziczy z jakiejs innej, a chcemy ja wykorzystywac wielowatkowo. Poniewaz w Javie klasa moze dziedziczyc tylko z jednej klasy (abstrakcyjnej albo konkretnej), ale moze implementowac dowolnie wiele interfejsow, trzeba zaimplementowac metode run(), ktora bedzie uruchamiana jako osobny watek. 



Wyszukiwarka

Podobne podstrony:
I8#1 grA, Studia, WAT Informatyka, JTP - java
I7#1 grB, Studia, WAT Informatyka, JTP - java
I7#2, Studia, WAT Informatyka, JTP - java
I8#1 grB, Studia, WAT Informatyka, JTP - java
MTSI-zadanie, Studia, WAT Informatyka, WmS - metodyka
SPR-ANKI, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab2
Zadanie IY4S1, Studia, WAT Informatyka, s3 - GK - grafika komputerowa, LAB2
sprawozdanie3, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab4
sprawozdanie oswietlenie, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab3
majne sciaga teory do druku, Studia, WAT Informatyka, s2 - Peie - podstawy elektroniki i elektrotech
Rzezba Lab4, Studia, WAT Informatyka, s3 - GK - grafika komputerowa, LAB4
GK LAB3, Studia, WAT Informatyka, s3 - GK - grafika komputerowa, LAB4
KWADRYKI, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab2
OpenGl, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab4
Zad1, Studia, WAT Informatyka 2, semestr III, Statystyka matematyczna
Sprawozdanie BPiE, Studia, WAT Informatyka, s4 - Bpie - bezpieczeństwo pracy i ergonomia
Swb-sciaga, Studia, WAT Informatyka, s4 - Swb - systemy wbudowane
Zadania L3 I6X4S1, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab4
Zadania L3 I6Y3S1, Studia, WAT Informatyka, s3 - GK - lab grafika komputerowa, Lab3

więcej podobnych podstron