W ramach tego laboratorium studenci nauczą się podstaw zarządzania obiektami w programowaniu obiektowym, ze szczególnym uwzględnieniem mechanizmów konstruktorów i destruktorów.
- Zrozumienie roli konstruktorów i destruktorów w programowaniu obiektowym.
- Implementacja klas z konstruktorami i destruktorami w językach C++ i Java.
- Zrozumienie zarządzania zasobami oraz automatycznego zwalniania pamięci (C++).
Konstruktor: Metoda, która jest automatycznie wywoływana podczas tworzenia obiektu. Jej zadaniem jest inicjalizacja pól klasy.
C++: Konstruktor może być przeciążony (może mieć różne wersje z różnymi parametrami).
Java: Każda klasa ma domyślny konstruktor, ale może mieć również niestandardowe, przeciążone konstruktory.
Destruktor (C++): Specjalna metoda, która jest wywoływana automatycznie, gdy obiekt przestaje być używany. Destruktor służy do zwalniania zasobów (np. pamięci dynamicznej).
- Stwórz klasę
Samochód
:
- Atrybuty:
string marka
string model
int rokProdukcji
- Konstruktor: Przyjmujący wartości dla wszystkich atrybutów.
- Domyślny konstruktor: Inicjalizujący atrybuty domyślnymi wartościami.
- Destruktor: Wyświetlający komunikat "Destruktor wywołany dla: [marka] [model]".
- Stwórz klasę
Samochód
:
- Atrybuty:
- String marka
- String model
- int rokProdukcji
- Konstruktor: Przyjmujący wartości dla wszystkich atrybutów.
- Domyślny konstruktor: Inicjalizujący atrybuty domyślnymi wartościami.
- Zaimplementowanie klasy
Samochód
z konstruktorami w C++ lub Java. - W przypadku C++: Dodanie destruktora, który wyświetla komunikat o usunięciu obiektu.
- Testowanie kodu poprzez tworzenie różnych obiektów za pomocą konstruktorów.
Cel: Zaimplementuj klasę, która przechowuje dynamicznie alokowane zasoby (np. tablice dynamiczne), wykorzystując przeciążone konstruktory oraz destruktory w C++.
- Stwórz klasę
Tablica
:
- Atrybut: wskaźnik do dynamicznej tablicy
int
. - Konstruktor domyślny: alokuje tablicę o wielkości 10 elementów.
- Konstruktor z parametrem: alokuje tablicę o podanej wielkości.
- Destruktor: zwalnia dynamiczną pamięć.
W języku Java nie ma potrzeby stosowania destruktorów do zwalniania zasobów, ponieważ tym zajmuje się garbage collector. Możesz jednak zaimplementować finalizer (choć jego użycie jest odradzane).
- Implementacja klasy
Tablica
w C++ i Java. - Testowanie działania konstruktorów i destruktorów (w przypadku C++).
- W C++: Upewnienie się, że pamięć jest prawidłowo zwalniana po zakończeniu programu.
- Rozumieć różnicę między konstruktorami domyślnymi a konstruktorami przeciążonymi.
- Nauczyć się tworzyć destruktory w C++ i wiedzieć, kiedy są one wywoływane.
- W Javie: zrozumienie, jak działa garbage collector i dlaczego destruktory nie są potrzebne.