jautājums |
atbilde |
Rodzaje błędów i wyjątków sākt mācīties
|
|
syntax, logic, runtime, linkowania, semantyczne
|
|
|
paradygmat projektowania obiektowego sākt mācīties
|
|
polimorfizm, abstrakcja, hermetyzacja, dziedziczenie
|
|
|
|
sākt mācīties
|
|
kreacyjne, strukturalne(łączenie), behawiorystyczne(komunikacja)
|
|
|
Metoda Wytwórcza (Factory Method) sākt mācīties
|
|
Definiuje interfejs do tworzenia obiektu, ale pozwala klasom pochodnym zdecydować, jakiej klasy instancję utworzyć
|
|
|
|
sākt mācīties
|
|
Gwarantuje, że klasa ma tylko jedną instancję i zapewnia globalny punkt dostępu do niej. Zastosowanie: Logger
|
|
|
|
sākt mācīties
|
|
Pozwala na współpracę klasom o niekompatybilnych interfejsach. Działa jak "przejściówka" elektryczna
|
|
|
|
sākt mācīties
|
|
Pozwala dynamicznie (w trakcie działania programu) dodawać nowe obowiązki/funkcje do obiektu. Jest alternatywą dla dziedziczenia
|
|
|
|
sākt mācīties
|
|
Definiuje zależność "jeden do wielu", tak że zmiana stanu jednego obiektu powoduje automatyczne powiadomienie i odświeżenie innych obiektów.
|
|
|
|
sākt mācīties
|
|
Single Responsibility Principle, Klasa powinna mieć tylko jedno zadanie i być odpowiedzialna za jedną część logiki biznesowej.
|
|
|
|
sākt mācīties
|
|
Open/clsd - Kod powinien być otwarty na rozszerzenia, co oznacza, że można dodawać nowe funkcjonalności bez modyfikacji istniejących klas
|
|
|
|
sākt mācīties
|
|
Liskov Substitution Principle, Klasa pochodna powinna w pełni zastępować klasę bazową bez zmieniania jej zachowania.
|
|
|
|
sākt mācīties
|
|
Interface Segregation Principle, Interfejsy powinny być małe i wyspecjalizowane, aby klasy implementowały tylko metody, których rzeczywiście potrzebują.
|
|
|
|
sākt mācīties
|
|
Dependency Inversion Principle
|
|
|
Rodzaje i przykłady optymalizacji sākt mācīties
|
|
Optymalizacja przez kompilator, Optymalizacja w kodzie, Optymalizacja sprzętowa, Loop Unrolling (Rozwijanie pętli
|
|
|
Główne techniki optymalizacji sākt mācīties
|
|
Inlining (Wstawianie funkcji w miejscu wywołania), Dead Code Elimination, RVO (Return Value Optimization):
|
|
|
|
sākt mācīties
|
|
Rezerwuje blok pamięci o podanym rozmiarze w bajtach, Zwraca: void* (wskaźnik beztypowy). Trzeba go rzutować (castować) na właściwy typ,śmieci, Błąd: Jeśli brakuje RAMu, zwraca NULL//free usuwa dane z pamięci
|
|
|
|
sākt mācīties
|
|
Alokuje pamięć na stercie (jak malloc), Wywołuje konstruktor obiektu, Zwraca wskaźnik właściwego typu, Wywołuje destruktor, Zwalnia pamięć operacyjną.
|
|
|
Rodzaje argumentów w python sākt mācīties
|
|
Pozycyjne (Positional): Standardowe, liczy się kolejność, Nazwane (Keyword): klucz=wartość. Kolejność nie ma znaczenia, Domyślne (Default): def func(a=10). Jeśli nie podasz, użyje 10
|
|
|
|
sākt mācīties
|
|
(funkcja, kolekcja): Wykonuje funkcję na każdym elemencie. Uwaga: W Pythonie 3 zwraca iterator (leniwy), a nie listę. Aby zobaczyć wynik, trzeba rzutować: list(map(...)).
|
|
|
|
sākt mācīties
|
|
Zwraca tylko te elementy, dla których funkcja zwróciła True
|
|
|
reduce(funkcja, kolekcja) sākt mācīties
|
|
"Zwija" listę do jednej wartości (np. suma, iloczyn). W Pythonie 3 przeniesione do modułu functools.
|
|
|
|
sākt mācīties
|
|
cpp: klasy abstakcyjne, brak dużego interfejsu, polimorfizm. Python: DuckTyping, ISP dla czytelności, dekoratory
|
|
|
Metody specjalne w python sākt mācīties
|
|
umożliwiają obiektom integrację z wbdwn mechanizmami języka. Dzięki nim programi może zdefić, jak własne klasy mają reagować na stnrd operacje, takie jak inicjal, konwersja na tekst czy użycie operatorów matemt, co jest mechaniz realiz przecią operatorów
|
|
|
|
sākt mācīties
|
|
To najczęściej używana metoda. Odpowiada za ustawienie początkowego stanu obiektu., po wywołaniu obiekt już istnieje i jest wypełniany danymi
|
|
|
|
sākt mācīties
|
|
zmienia obiekt na napis ma być czytelna dla użytkownika
|
|
|
|
sākt mācīties
|
|
zmeinia obiekt na napis jest wywoływany w debuggerze i ma być jednoznaczny dla programisty np(klient(id=5, imie='Jan'))
|
|
|
Operatory arytmetyczne (__add__, __sub__ sākt mācīties
|
|
Definiują w jaki sposób obiekty danej klasy są dodawane, odejmowane
|
|
|
|
sākt mācīties
|
|
obiekt może działać jak lista
|
|
|
|
sākt mācīties
|
|
Do operacji na liczbach rzeczywistych (float), math. pi, math. e, math. inf, sin, cos, sqrt
|
|
|
|
sākt mācīties
|
|
wydajnego przetwarzania kolekcji. product() – Iloczyn kartezjański. Zastępuje zagnieżdżone pętle for, permutations() – Wszystkie możliwe ustawienia elementów, cycle()
|
|
|
|
sākt mācīties
|
|
programowanie funkcyjne, reduce() "Zwijanie" listy do jednej wartości, partial() "Zamrażanie" argumentów. Tworzysz funkcję, ma już wypełnione niektóre parametry starej funkcji, lru_cache() Dekorator, który automatycznie dodaje pamięć podręczną do funkcji
|
|
|
|
sākt mācīties
|
|
collections to moduł Pythona z zaawansowanymi kontenerami danych. Najważniejsze: namedtuple (krotki z nazwanymi polami), deque (szybka kolejka dwustronna), Counter (zliczanie elementów) oraz defaultdict (słownik z domyślną wartością klucza).
|
|
|
|
sākt mācīties
|
|
Jest to klasa (zdefiniowana w nagłówku <thread>), będąca obiektowym wrapperem na identyfikator wątku systemowego
|
|
|
|
sākt mācīties
|
|
stan nieokreślony występujący, gdy co najmniej dwa wątki uzyskują dostęp do tego samego obszaru pamięci jednocześnie, przy czym: Przynajmniej jeden z nich wykonuje operację zapisu. Dostęp nie jest synchronizowany brak operacji atomowych lub blokad
|
|
|
|
sākt mācīties
|
|
fragment kodu, w którym następuje dostęp do zasobu współdzielonego. Wymaga ona serializacji dostępu – w danej chwili instrukcje z tego bloku mogą być wykonywane tylko przez jeden wątek
|
|
|
|
sākt mācīties
|
|
to mechanizm synchronizacji wątków w C++. Działa jak blokada: tylko jeden wątek może naraz uzyskać dostęp do sekcji krytycznej. Zapobiega to wyścigom (race conditions). Najbezpieczniej używać go z std: lock_guard
|
|
|