Zapoznaj się z artykułem a nastepnie odpowiedz na pytania.
virtual sealed override w C#virtual -
sealed -
override -
zapoznaj się z artykułami 1 oraz 2 i odpowiedz na pytania.
Metody abstrakcyjne nie zawierają rzeczywistego kodu, a klasy pochodne MUSZĄ nadpisać metodę. Metody wirtualne mogą mieć kod, który zazwyczaj stanowi domyślną implementację czegoś, a klasy pochodne MOGĄ nadpisać ten kod (metodę), używając modyfikatora override i dostarczyć własną implementację.
Stwórz abstrakcyjną klasę z metodą abstrakcyjną oraz virtualną. Spróbuj zaimplementować ciało obu metod. Następnie stwórz klasę dziedziczącą po stworzonej klasie abstrakcyjnej. Zaimplementuj metody które tego wymagają. Następnie stwórz obiekt i wywołaj obydwie metody.
Zapoznaj się z artykułem 12 a następnie odpowiedz na pytania.
Stwórz projekt w .Net 8.0. Stwórz interfejs z dwiema metodami: pierwsza nie powinna mieć implementacji (metoda abstrakcyjna), w drugiej metodzie spróbuj zdefiniować implementację funckji. Następnie zmień wersję docelową frameworku: https://learn.microsoft.com/en-us/visualstudio/ide/visual-studio-multi-targeting-overview?view=vs-2022https://learn.microsoft.com/en-us/visualstudio/ide/visual-studio-multi-targeting-overview?view=vs-2022
Napisz program, w którym zademonstrujesz przeciążanie metod oraz polimorfizm statyczny. Stwórz klasę
Matematyka, która będzie zawierać przeciążoną metodęDodaj, przyjmującą różne typy argumentów (np. int, double).
Napisz program, w którym zademonstrujesz polimorfizm dynamiczny. Zaimplementuj klasy Pojazd, Samochod, Motocykl, gdzie Pojazd będzie posiadać metodę Jazda(), którą klasy pochodne nadpiszą (override).
Stwórz klasy reprezentujące różne rodzaje zwierząt. Każde zwierzę ma metodę WydajDzwiek(), która generuje dźwięk charakterystyczny dla danego gatunku. Dodaj również metodę Jedz(), która nie będzie wirtualna.
- Zdefiniuj klasę bazową Zwierze z wirtualną metodą WydajDzwiek() i niewirtualną metodą Jedz().
- Stwórz klasę pochodną Pies, która nadpisuje metodę WydajDzwiek().
- Stwórz klasę pochodną Kot, która nadpisuje metodę WydajDzwiek().
- Stwórz klasę pochodną Sfinks, która dziedziczy po Kot i nadpisuje metodę WydajDzwiek(), ale zablokuj dalsze nadpisywanie tej metody za pomocą słowa kluczowego sealed. Spróbuj utworzyć kolejną klasę Faraon dziedziczącą po Sfinks i nadpisać metodę WydajDzwiek(). Czy kompilator zgłosi błąd?
Napisz program w C#, który symuluje różne typy pojazdów. Program powinien zawierać klasę abstrakcyjną Vehicle, która będzie podstawą dla konkretnych typów pojazdów, takich jak Car i Bike. Stwórz klasę abstrakcyjną Vehicle, która zawiera:
- Pole Speed (prędkość)
- Metodę abstrakcyjną Move(), która będzie implementowana w klasach dziedziczących.
- Wspólną metodę ShowInfo(), która wypisuje informacje o pojeździe. Stwórz klasy Car i Bike, które dziedziczą po Vehicle:
- Car powinien mieć dodatkowe pole FuelConsumption (zużycie paliwa na 100 km) i nadpisywać metodę Move(), aby symulować jazdę, zmniejszając poziom paliwa.
- Bike (rower) nie ma paliwa, ale może mieć dodatkowe pole HasBell (czy ma dzwonek).
- Stwórz instancje Car i Bike, przypisz im wartości, wywołaj Move() i ShowInfo(). Jak moglibyśmy wykorzystać np. kolekcję pojazdów (np. listę List
) i jak polimorfizm ułatwiłby obsługę różnych typów pojazdów?
Napisz program w C#, który będzie zarządzał listą zadań. Użyj interfejsów do zdefiniowania podstawowej funkcjonalności, jaką musi spełniać każde zadanie, a następnie stwórz różne typy zadań. Stwórz interfejs ITask, który będzie zawierał:
- Właściwość Description (opis zadania, typ string).
- Właściwość IsCompleted (określa, czy zadanie zostało wykonane, typ bool).
- Metodę Complete(), która zmienia stan IsCompleted na true.
- Stwórz klasę SimpleTask, która implementuje interfejs ITask. Będzie to zwykłe zadanie z opisem.
- Stwórz klasę UrgentTask, która również implementuje interfejs ITask. Oprócz opisu, zadanie to powinno mieć dodatkowe pole Priority (priorytet zadania). Zadanie o wyższym priorytecie powinno mieć większą wagę.
- Stwórz kilka zadań (zarówno SimpleTask, jak i UrgentTask).
- Dodaj je do listy List
. - Zmieniaj stan IsCompleted i wypisuj szczegóły każdego zadania.