Zagadnienia na egzamin z PO (na ocenę dostateczną; wraz ze znajomością przykładów w C#):1. Klasa, dane (pola i właściwości) i metody, konstruktor, obiekt.2. Hermetyzacja - modyfikatory; domyślne modyfikatory w C# i ich interpretacja.3. Hermetyzacja - właściwości i ich akcesory (get,set) w C#.4. Dziedziczenie; metody i konstruktory klasy bazowej; możliwości i ograniczenia dziedziczenia w C#.5. Asocjacje (posiadanie przez obiekt [referencji do] obiektu innej klasy): agregacja, kompozycja.6. Klasy i metody abstrakcyjne.7. Polimorfizm - interfejsy w C#; "dziedziczenie" interfejsów.8. Użycie typów i metod generycznych na wybranym przykładzie typu wbudowanego w .NET.
1. Klasa, dane (pola i właściwości) i metody, konstruktor, obiekt.
Klasa jest częściową lub całkowitą definicją dla obiektów. Definiuje jakie metody i zmienne będą występować w obiekcie. Obiekt, który został stworzony na podstawie danej klasy nazywany jest jej instancją. Klasy mogą być typami języka programowania - przykładowo, instancja klas Grzyb będzie mieć typ Grzyb.
Klasa jest to konstrukcja grupująca elementy: funkcje i zmienne, jest to wzorzec do tworzenia obiektów.
Funkcje nazywane są metodami, natomiast zmienne właściwościami.
Klasę definiuje się w następujący sposób:
class A{
//ciało klasy, tutaj powinny być zdefiniowane atrybuty oraz metody
}
Składowymi klasy są dane (pola, właściwości) i metody.
-Pole jest zmienną dowolnego typu, która jest zadeklarowana bezpośrednio w klasie przykład: int a
-Właściwości, które też są zadeklarowane w klasie, posiadają procedury pobierania i ustawiania, które zapewniają większą kontrolę nad sposobem ustawiania lub zwracania wartości.(get i set) przykład : int a {get; set;}
Metoda to funkcja należąca do klasy. Metody składowe są nawet czasem nazywane funkcjami
składowymi. Metody definiują, co klasa może zrobić i jak się zachowuje.
Konstruktor - wywoływany przy tworzeniu obiektu, często przypisywane są w nim definiowane domyślne wartości zmiennych tworzonego obiektu
konstruktor domyślny - to konstruktor, który może być wywoływany podczas tworzenia obiektu bez żadnych argumentów.
* musi nazywać się tak jak klasa
* nie zwraca żadnego typu
* publiczny
* może mieć argumenty
przykład: public Nazwaklasy() { }
Class Imie{
public int imie;
public Imie(int i){
imie = i;
Class Program
static void main(){
Imie moje = new Imie(Kacper)
2. Hermetyzacja - modyfikatory; domyślne modyfikatory w C# i ich interpretacja.
Hermetyzacja polega na ukrywaniu pewnych danych składowych lub metod obiektów danej klasy tak, aby były one dostępne tylko metodom wewnętrznym danej klasy lub funkcjom zaprzyjaźnionym.
Modyfikatory służą do modyfikowania deklaracji typów oraz jego elementów członkowskich.
Modyfikatory dostępu: określają poziom dostępu do zmiennych i metod wchodzących w skład klas czy struktur
a) public - Nie ma żadnych ograniczeń na uzyskiwanie dostępu,
b) private – dostęp tylko w obrębie klasy w której została zadeklarowana jej składowa (jest domyślnym modyfikatorem dostępu dla składowych klasy)
c) internal – dostęp tylko w obrębie tego samego zestawu( np. biblioteki)
d) protected - elementy będą dostępne dla danej klasy oraz na potrzeby klas dziedziczonych
Inne modyfikatory:
abstract - Wskazuje, że klasa jest przeznaczona do użycia wyłącznie jako klasa podstawowa innych klas.
async - Wskazuje, że modyfikowana metoda, wyrażenie lambda lub metoda anonimowa jest asynchroniczna.
const -(wartość stała) Określa, że nie można modyfikować wartości pola lub zmiennej lokalnej.
event - Deklaruje zdarzenie.
extern -Wskazuje, że metoda jest implementowana zewnętrznie.
new - Jawnie ukrywa element członkowski odziedziczony z klasy podstawowej.
override -Dostarcza nową implementację wirtualnego elementu członkowskiego odziedziczonego z klasy podstawowej.
partial - Definiuje częściowe klasy, struktury i metody w obrębie jednego zestawu.
eadonly - Deklaruje pole, do którego można przypisać wartości tylko w ramach deklaracji lub za pomocą konstruktora w tej samej klasie.
sealed - Określa, że klasa nie może być dziedziczona.
static - Deklaruje element członkowski, który należy do typu, a nie do określonego obiektu.
unsafe - Deklaruje niebezpieczny kontekst.
virtual - Deklaruje metodę lub metodę dostępu, której implementację można zmienić za pomocą zastępującego elementu członkowskiego w klasie pochodnej.
volatile - Wskazuje, że pole może być modyfikowane w programie przez element, taki jak system operacyjny, sprzęt lub wykonywany równocześnie wątek.
3. Hermetyzacja - właściwości i ich akcesory (get,set) w C#.
Właściwość nie jest ani metodą ani zmienną, zapewnia dostęp do pól klasy posługując się przy tym akcesorami get i set. Główną funkcjonalnością właściwości jest możliwość zapisywania i odczytywania prywatnych pól klasy, tak jak by były publiczne.
Akcesor get wywoływany jest w chwili gdy chcemy pobrać wartość właściwości.Akcesor set wywołany jest w chwili nadania wartości właściwości. Get zwraca wartość a set ją ustawia.
Używanie właściwości i akcesorów pozwala znacznie zredukować kod a na dodatek narzuca schemat poprawnego programowania obiektowego.
class Imie{
private int imie;
public int IMIE{
get {return imie;}
set {imie = value;}
class Program{
Imie moje = new Imie();
moje.IMIE = Kacper;
Console.ReadLine("{0}", moje.IMIE);
4. Dziedziczenie; metody i konstruktory klasy bazowej; możliwości i ograniczenia dziedziczenia w C#.
Dziedziczeniem w programowaniu obiektowym nazywamy mechanizm współdzielenia funkcjonalności między klasami. Klasa może dziedziczyć po innej klasie, co oznacza, że oprócz swoich własnych atrybutów oraz zachowań, uzyskuje także te pochodzące z klasy, z której dziedziczy. Klasa dziedzicząca jest nazywana klasą pochodną lub potomną zaś klasa, z której następuje dziedziczenie — klasą bazową Z jednej klasy bazowej można uzyskać dowolną liczbę klas pochodnych. Klasy pochodne posiadają obok swoich własnych metod i pól, również kompletny interfejs klasy bazowej.
-Klasy pochodne otrzymują wszystkie metody i atrybuty swoich klas bazowych oraz mogą dodawać nowe
-Konstruktory, w przeciwieństwie do innych metod, nie podlegają dziedziczeniu.
Dziedziczenie posiada kilka ograniczeń wynikających z faktu, że hierarchia klas jest ustalana w momencie kompilacji programu i nie może podlegać późniejszym zmianom. Wyobraźmy sobie klasę Osoba, z której dziedziczą klasy Pracownik oraz Student. Napotykamy tutaj na istotne problemy:
• Pojedynczość — w językach z pojedynczym dziedziczeniem osoba może być albo pracownikiem, albo studentem.
• Niezmienność — nawet jeśli skorzystamy z wielokrotnego dziedziczenia i utworzymy klasę StudentPracownik, klasę wybieramy w momencie tworzenia obiektu i nie możemy jej później zmienić. Oznacza to, że system nie może poprawnie reagować na sytuacje, gdy dotychczasowy student zostaje dodatkowo pracownikiem, gdyż konieczne jest wtedy utworzenie całkowicie nowego obiektu.
class Zwierze
{
...
};
class Gad : public Zwierze
class Ssak : public Zwierze
5. Asocjacje (posiadanie przez obiekt [referencji do] obiektu innej klasy): agregacja, kompozycja.
Asocjacje są to związki między klasami. Mamy dwa następujące typy asocjacji kompozycja i agregacja. Obiekt klasy A ma referencje do obiektu klasy B.Kompozycja wtedy gdy A kontroluje tworzenie i niszczenie B , A wywołuje konstruktor klasy B
Agregacja, gdy A nie kontroluje „czasu istnienia B” np. B żyje dłużej
Obiekt przestaje „ żyć” kiedy przestaje istnieć referencja do obiektu.
6. Klasy i metody abstrakcyjne.
Klasa abstrakcyjna to taka klasa która nie dostarcza nam dokładnych implementacji metod. Celem tych klas jest tylko przekazanie pewnych cech i funkcji do swoich kolegów i tyle. W takim wypadku do gry wchodzi słowo kluczowe “abstract". Dzięki niemu możesz stworzyć klasę abstrakcyjną. Nie możesz stworzyć instancji klasy abstrakcyjnej czyli oznaczasz, że ta klasa spełnia swój cel wyłącznie w hierarchii dziedziczenia.
abstract class SsakZujacyTrawe : Ssak {
public...
Uszekk