51) Jakie są fundamentalne paradygmaty programowania obiektowego?
Istnieją 4 filary, na których opiera się programowanie obiektowe, a są to dziedziczenie, polimorfizm, abstrakcja oraz hermetyzacja (enkapsulacja).
Dziedziczenie, czyli rodzaj relacji pomiędzy dwoma klasami, która pozwala jednemu z nich dziedziczyć kod drugiego.
Polimorfizm, możliwość zapisywania jednej metody pod różnymi postaciami.
Abstrakcja, operowanie na obiektach bez znajomości szczegółów ich implementacji.
Hermetyzacja (enkapsulacja), czyli ukrywanie pewnych danych, tak aby zabezpieczyć się przed nieprawidłowym działaniem.
Tutaj też możesz zostać poproszony również o rozwinięcie dowolnego z tych 4 filarów. Każdy ten temat rozwijam bardziej szczegółowo na moim blogu, także, jeżeli interesują Cię szczegóły, to koniecznie zerknij (tutaj – programowanie obiektowe).
52) Czym są obiekty immutable?
Obiekty immutable, są to obiekty, które po inicjalizacji zostają niezmienne (tylko do odczytu). Przykładem obiektu immutable w C# jest string, które wartości nie możemy zmienić. Jeżeli robimy przypisanie do zmiennej typu string, to tak naprawdę zostaje stworzony nowy obiekt.
53) Co to jest LINQ?
Skrót LINQ wywodzi się od Language-Integrated Query, jest to część technologii .NET, która umożliwia zadawanie pytań na obiektach.
Jest to zbiór metod rozszerzających z przestrzeni nazw System.Linq. Dzięki LINQ możemy odpytać daną kolekcję lub kilka kolekcji i pobrać z nich obiekty, które nas interesują. Możemy zastosować filtrowanie danych, sortowanie, złączenia, czy grupowanie.
Mamy do wyboru 2 składnie LINQ, tzw. query syntax, czyli składnia zapytania oraz method syntax, czyli składnia metody, zwana też lambda expression, czyli wyrażeniami lambda.
var numbers = new List<int> { 0, 8, 9, 13 };
var evenNumber = numbers
.Where(x => x % 2 == 0)
.OrderByDescending(x => x);
54) Czym są wyrażenia lambda?
Wyrażenie lambda, jest to anonimowa metoda, krótka metoda bez deklaracji, która najczęściej jest używana do zapytań LINQ. Możemy stworzyć takie wyrażenie w prosty sposób i dokładnie w tym miejscu, gdzie potrzebujemy go użyć. Możemy dzięki temu zaoszczędzić czas na pisanie osobnej metody z pełną deklaracją.
var evenNumber = numbers
.Where(x => x % 2 == 0);
x => x % 2 == 0
[parametry wejściowe] => [wyrażenie]
55) Co to jest ORM?
ORM z angielskiego Object Relational Mapping, czyli mapowanie obiektowo relacyjne. Jest to sposób odwzorowania architektury obiektowej na relacyjną bazę danych. ORM umożliwia nam tworzenie zapytania na bazie danych za pomocą obiektowego paradygmatu programowania, to znaczy możemy operować na zwykłych obiektach np. w języku C#, a pod spodem wywołania różnych metod czy właściwości będą zamieniane na zapytania SQL.
_context.Books.Add(new Book);
_context.SaveChanges();
INSERT INTO Books(column1, columne2)
VALUES (value1, value2);
56) Czym jest Entity Framework Core?
Entity Framework Core, jest to lekki, rozszerzalny, open-sourcowy wspierający wiele platform framework ORM, który jest częścią Microsoft .NET Core. Został stworzony, by był łatwiejszy w użyciu i miał lepsza wydajność niż jego poprzednik Entity Framework.
Jego głównym celem jest zwiększenie produktywności programistów przy pracy z bazami danych. Możemy generować zapytania do odczytu i komendy do zapisu na bazie danych. Jeżeli chcesz wykonywać zapytania na bazie danych, to możesz posłużyć się składnią LINQ. Entity Framework Core wykona odpowiednie zapytanie i zmapuje wynik na obiekty Twojego modelu. Entity Framework Core wspiera między innymi takie bazy jak SQL Server, SQLite, PostgreSQL, MySQL, Oracle czy Firebird.
57) Jak zaimplementować wiele interfejsów z taką samą nazwą metody w tej samej klasie?
W takim przypadku należy podać jawnie przed nazwą metody – nazwę interfejsu.
public interface IPerson1
{
void DisplayName();
}
public interface IPerson2
{
void DisplayName();
}
public class Student : IPerson1, IPerson2
{
void IPerson1.DisplayName()
{
}
void IPerson2.DisplayName()
{
}
}
58) Czy możemy użyć słowa kluczowego this w statycznej klasie?
Nie. Słowa this nie można użyć w klasie statycznej, ponieważ słowo kluczowego this jest odwołaniem od aktualnej instancji klasy, a klasa statyczna nie jest instancją obiektu.
59) Co to jest boxing i unboxing w C#?
Boxing (pakowanie) konwertuje typ wartościowy (int, double, char, itp.) na typ referencyjny (object), przy użyciu konwersji niejawnej.
Unboxing (rozpakowywanie) jest odwrotną operacją. To znaczy, konwertuje typ referencyjny (object) do typu wartościowego (int, double, char itp.), tym razem przy użyciu jawnej konwersji.
int number1 = 1;
object obj = number1;//boxing
int number2 = (int)obj;//unboxing
60) Czym są typy generyczne w C#?
Dzięki typom generycznym możemy tworzyć kod, który możemy używać wielokrotnie, bez konieczności powtarzania tych samych kawałków kod. Dobrym przykładem typu generycznego w C# jest lista. Implementacja listy umożliwia nam przekazanie i pracowanie na dowolnych elementach.
Możemy tworzyć również własne klasy generyczne. Gdzie każde wystąpienie T (domyślna nazwa T, ale może to być dowolna nazwa. Zaleca się, żeby zaczynała się od litery T) będzie zastąpione przekazanym przy deklaracji typem.
public class List<T>;
var listOfInt = new List<int>();
var listOdDouble = new List<double>();
var listOdString = new List<string>();
var listOfStudents = new List<Student>();
ZAKOŃCZENIE
To wszystko jeżeli chodzi o pytania, na ten materiał. Do kolejnych wrócimy już w następnym artykule. Jeżeli taki materiał Ci się spodobał, to koniecznie dołącz do mojej społeczności – darmowe zapisy, gdzie będziesz również miał dostęp do dodatkowych materiałów.
To wszystko na dzisiaj, do zobaczenia w kolejnym artykule.
Poprzedni artykuł - 100 Pytań (i Odpowiedzi!) z Rozmów Kwalifikacyjnych Dla Młodszych Programistów C#/.NET (Część 5/10).
Następny artykuł - 100 Pytań (i Odpowiedzi!) z Rozmów Kwalifikacyjnych Dla Młodszych Programistów C#/.NET (Część 7/10).