Pytania pomocnicze - INF.04
Projektowanie, programowanie i testowanie aplikacji
Pytania pomocnicze rozwijające tematy z pytań egzaminacyjnych. Każde pytanie ma krótką odpowiedź, która pomaga utrwalić wiedzę i przygotować się do egzaminu. Łącznie: 1207.
Strona 8 z 11.
Jak porównać algorytmy na podstawie notacji Big O?
Należy porównać tempo wzrostu liczby operacji wraz ze wzrostem rozmiaru danych n. Im wolniej rośnie funkcja złożoności, tym algorytm jest zwykle szybszy dla dużych danych.
Dlaczego algorytm o złożoności O(n) jest szybszy od O(n²) dla dużych danych?
W O(n) liczba operacji rośnie liniowo, np. 1000 elementów to około 1000 operacji. W O(n²) wzrost jest kwadratowy, czyli dla 1000 elementów może to być około 1 000 000 operacji.
Jaka jest kolejność typowych złożoności od najszybszej do najwolniejszej?
Najczęściej przyjmuje się kolejność: O(1), O(log n), O(n), O(n log n), O(n²), O(n³), O(2^n), O(n!). Im dalej na liście, tym gorzej algorytm skaluje się dla dużych danych.
Co oznacza złożoność O(n!)?
O(n!) oznacza złożoność silniową, która rośnie bardzo szybko. Takie algorytmy są zwykle niepraktyczne dla większych danych, np. przy sprawdzaniu wszystkich permutacji.
Czy algorytm o lepszej złożoności zawsze będzie szybszy w praktyce?
Nie zawsze dla małych danych, ponieważ wpływ mają też stałe czasowe, implementacja i sprzęt. Jednak dla dużych danych algorytm o lepszej złożoności zazwyczaj wygrywa.
Dlaczego w tym pytaniu poprawną odpowiedzią jest algorytm 4?
Algorytm 4 ma złożoność O(n), czyli liniową. Spośród podanych: O(n), O(n²), O(n³) i O(n!), złożoność O(n) rośnie najwolniej, więc jest najlepszym wyborem.
Do czego służy WPF?
WPF, czyli Windows Presentation Foundation, służy do tworzenia aplikacji desktopowych dla systemu Windows. Pozwala budować graficzny interfejs użytkownika z użyciem XAML i języków .NET, np. C#.
Dlaczego Angular nie jest poprawną odpowiedzią w tym pytaniu?
Angular jest frameworkiem front-endowym do tworzenia aplikacji webowych działających w przeglądarce. Nie jest podstawowym narzędziem do tworzenia klasycznych aplikacji desktopowych.
Czym różni się aplikacja desktopowa od aplikacji webowej?
Aplikacja desktopowa jest instalowana i uruchamiana bezpośrednio w systemie operacyjnym. Aplikacja webowa działa zwykle w przeglądarce i komunikuje się z serwerem.
Jaką rolę pełni XAML w aplikacjach WPF?
XAML służy do deklaratywnego opisywania interfejsu użytkownika, np. okien, przycisków, pól tekstowych i układów kontrolek. Logikę działania zwykle zapisuje się w C#.
Do czego służy Xamarin?
Xamarin służy głównie do tworzenia aplikacji mobilnych na różne platformy, szczególnie Android i iOS, z użyciem technologii .NET. Nie jest typową odpowiedzią na pytanie o aplikacje desktopowe.
Jakie środowisko programistyczne najczęściej wykorzystuje się do pracy z WPF?
Najczęściej używa się Microsoft Visual Studio. Środowisko to wspiera projektowanie okien, edycję XAML, pisanie kodu C# oraz debugowanie aplikacji.
Po czym rozpoznać tablicę dwuwymiarową w C#?
Po zapisie z przecinkiem w nawiasach kwadratowych, np. `int[,]`. Przecinek oznacza, że tablica ma dwa wymiary.
Co oznacza zapis `new int[3, 3]`?
Tworzy tablicę dwuwymiarową liczb całkowitych o rozmiarze 3 na 3. Taka tablica ma łącznie 9 elementów.
Czym różni się `int[]` od `int[,]` w C#?
`int[]` oznacza tablicę jednowymiarową, czyli ciąg elementów z jednym indeksem. `int[,]` oznacza tablicę dwuwymiarową, czyli strukturę z dwoma indeksami.
Jak odwołać się do elementu tablicy dwuwymiarowej?
Należy podać dwa indeksy, np. `array[1, 2]`. Pierwszy indeks zwykle oznacza wiersz, drugi kolumnę.
Dlaczego kod z pytania nie przedstawia stosu?
Stos działa według zasady LIFO, czyli ostatni dodany element jest zdejmowany jako pierwszy. W kodzie utworzono tablicę, a nie strukturę typu `Stack`.
Dlaczego kod z pytania nie przedstawia listy w C#?
Lista w C# jest zwykle tworzona jako `List<int> lista = new List<int>();`. Zapis `int[,]` oznacza tablicę dwuwymiarową, a nie listę.
Dlaczego z poziomu głównego programu można odwołać się do pola p3 przez zapis nazwaObiektu.p3?
Ponieważ p3 ma modyfikator public, a więc jest dostępne z dowolnego miejsca, gdzie obiekt jest widoczny. Taki element można odczytywać i modyfikować bezpośrednio przez obiekt.
Co oznacza modyfikator dostępu public przy polu klasy?
Modyfikator `public` oznacza, że pole jest dostępne z zewnątrz klasy. Można się do niego odwołać przez `nazwaObiektu.nazwaPola`.
Dlaczego pola p1 i p2 nie są dostępne przez nazwaObiektu.nazwaPola?
Pola p1 i p2 są oznaczone jako private, więc są dostępne tylko wewnątrz tej samej klasy. Kod głównego programu nie może odwoływać się do nich bezpośrednio.
Dlaczego pole private nie jest dostępne z poziomu programu głównego?
Pole `private` jest dostępne tylko wewnątrz klasy, w której zostało zadeklarowane. Kod spoza tej klasy nie może odczytać ani zmienić go bezpośrednio.
Co oznacza modyfikator protected w przypadku pól p4 i p5?
Protected oznacza dostęp w obrębie danej klasy oraz klas pochodnych. Nie daje on bezpośredniego dostępu z poziomu zwykłego kodu głównego przez obiekt.
Czym różni się protected od private?
`private` jest dostępne tylko w tej samej klasie. `protected` jest dostępne także w klasach pochodnych, czyli dziedziczących po danej klasie.
Jaka jest różnica między private, protected i public?
Private ogranicza dostęp do wnętrza klasy, protected pozwala dodatkowo korzystać z pola w klasach dziedziczących, a public udostępnia pole na zewnątrz. To podstawowe modyfikatory kontroli dostępu.
Czy pole protected można odczytać przez obiekt w programie głównym?
Nie. Pole `protected` nie jest dostępne bezpośrednio przez `obiekt.pole` z kodu zewnętrznego, chyba że dostęp odbywa się wewnątrz klasy dziedziczącej.
Czy typ pola, na przykład int, short, string lub float, wpływa na to, czy można się do niego odwołać przez obiekt?
Nie, o dostępności decyduje modyfikator dostępu, a nie typ danych. Typ określa tylko rodzaj przechowywanej wartości.
Które pole z podanego kodu można wywołać jako nazwaObiektu.nazwaPola?
Tylko `p3`, ponieważ jako jedyne ma modyfikator `public`. Pola `p1` i `p2` są prywatne, a `p4` i `p5` chronione.
Dlaczego w programowaniu obiektowym często unika się publicznych pól?
Publiczne pola osłabiają hermetyzację, bo pozwalają zmieniać stan obiektu bez kontroli. Częściej stosuje się pola prywatne i udostępnia dostęp przez właściwości lub metody.
Jaki związek mają modyfikatory dostępu z hermetyzacją?
Modyfikatory dostępu pozwalają ukrywać szczegóły klasy przed kodem zewnętrznym. Dzięki temu klasa kontroluje, które dane są dostępne publicznie, a które pozostają ukryte.
W jaki sposób można udostępnić wartość pola private na zewnątrz klasy, nie zmieniając go na public?
Można użyć metody lub właściwości, które zwracają albo ustawiają wartość pola. Dzięki temu klasa zachowuje kontrolę nad danymi.
Dlaczego zwykle nie zaleca się udostępniania pól jako public?
Publiczne pola można dowolnie zmieniać z zewnątrz, co utrudnia kontrolę poprawności danych. Częściej stosuje się prywatne pola i publiczne właściwości lub metody dostępu.
Dlaczego ObservableCollection<T> jest odpowiednia do współpracy z interfejsem użytkownika?
Ponieważ powiadamia interfejs o zmianach w kolekcji, takich jak dodanie, usunięcie lub przestawienie elementów. Dzięki temu kontrolki powiązane z danymi mogą automatycznie się odświeżać.
Dlaczego ObservableCollection<T> jest używana w interfejsach użytkownika?
Ponieważ informuje kontrolki UI o zmianach w kolekcji, np. dodaniu lub usunięciu elementu. Dzięki temu widok może odświeżyć się automatycznie.
Czym ObservableCollection<T> różni się od List<T> w C#?
List<T> przechowuje dane, ale nie informuje UI o zmianach. ObservableCollection<T> dodatkowo zgłasza zdarzenia zmian kolekcji, co jest kluczowe w aplikacjach z data bindingiem.
Czym różni się ObservableCollection<T> od List<T>?
Obie kolekcje przechowują elementy, ale `List<T>` nie powiadamia interfejsu o zmianach. `ObservableCollection<T>` zgłasza zmiany kolekcji, dlatego lepiej nadaje się do data bindingu.
Jaką rolę pełni data binding przy pracy z ObservableCollection<T>?
Data binding łączy źródło danych z kontrolką interfejsu. Gdy źródłem jest ObservableCollection<T>, zmiany w kolekcji mogą być automatycznie widoczne w UI bez ręcznego odświeżania.
W jakich technologiach najczęściej stosuje się ObservableCollection<T>?
Najczęściej w aplikacjach z wiązaniem danych, np. WPF, Xamarin, MAUI. Często występuje też we wzorcu MVVM.
Czy ObservableCollection<T> informuje także o zmianie właściwości obiektu znajdującego się w kolekcji?
Nie zawsze. Sama kolekcja informuje o zmianach w swojej strukturze, ale zmiany wewnątrz obiektu wymagają zwykle implementacji INotifyPropertyChanged w tym obiekcie.
Co oznacza powiadamianie o zmianach kolekcji?
Oznacza to, że po dodaniu, usunięciu lub wyczyszczeniu elementów kolekcja wysyła informację o zmianie. Kontrolka powiązana z kolekcją może wtedy zaktualizować wyświetlane dane.
W jakich technologiach najczęściej spotyka się ObservableCollection<T>?
Najczęściej w aplikacjach .NET z interfejsem graficznym, zwłaszcza WPF, Xamarin i MAUI, gdzie używa się wiązania danych i wzorca MVVM.
Jaki interfejs odpowiada za informowanie o zmianach w ObservableCollection<T>?
`ObservableCollection<T>` implementuje interfejs `INotifyCollectionChanged`. To on umożliwia zgłaszanie zmian w strukturze kolekcji.
Dlaczego KeyedCollection, Collection i ReadOnlyCollection nie są najlepszym wyborem w tym zadaniu?
Te kolekcje nie są przeznaczone do automatycznego powiadamiania interfejsu o zmianach zawartości. Mogą służyć do organizacji danych, ale nie rozwiązują problemu aktualizacji UI.
Czy ObservableCollection<T> automatycznie wykrywa zmianę właściwości pojedynczego obiektu w kolekcji?
Nie zawsze. `ObservableCollection<T>` informuje głównie o zmianach w kolekcji, np. dodaniu lub usunięciu elementu. Aby widok reagował na zmianę właściwości obiektu, obiekt powinien implementować `INotifyPropertyChanged`.
Dlaczego ReadOnlyCollection nie jest poprawną odpowiedzią w tym pytaniu?
`ReadOnlyCollection` służy do udostępniania kolekcji tylko do odczytu. Nie jest przeznaczona do automatycznego powiadamiania interfejsu użytkownika o zmianach.
Jak ObservableCollection<T> wspiera wzorzec MVVM?
W MVVM dane z ViewModelu są wiązane z widokiem. `ObservableCollection<T>` pozwala, aby zmiany w danych kolekcji były automatycznie widoczne w interfejsie użytkownika.
Co robi opcja Clean Solution w środowisku Visual Studio?
Usuwa pliki tymczasowe i wyniki kompilacji projektu, np. z katalogów bin i obj. Nie usuwa kodu źródłowego ani ustawień projektu.
Do czego służy opcja Clean Solution w Visual Studio?
Clean Solution usuwa pliki wygenerowane podczas kompilacji, takie jak pliki wynikowe i tymczasowe. Nie usuwa kodu źródłowego projektu.
Czym różni się Clean Solution od Build Solution?
Clean Solution czyści wyniki kompilacji, natomiast Build Solution kompiluje projekt i tworzy nowe pliki wynikowe.
Kiedy warto użyć polecenia Clean Solution?
Gdy występują problemy z nieaktualnymi plikami po kompilacji, błędy po zmianach konfiguracji albo przed pełną przebudową projektu. To pomaga usunąć stare artefakty.
Czym różni się Rebuild Solution od Clean Solution?
Rebuild Solution najpierw czyści projekt, a potem buduje go ponownie. Clean Solution wykonuje tylko etap czyszczenia.
Czy Clean Solution usuwa cały projekt z dysku?
Nie. Usuwa tylko pliki wygenerowane podczas budowania projektu, a nie pliki źródłowe, formularze, klasy czy zasoby aplikacji.
Jakie pliki mogą zostać usunięte po wybraniu Clean Solution?
Najczęściej są to pliki z katalogów `bin` i `obj`, np. pliki `.exe`, `.dll` oraz pliki pośrednie kompilacji.
Jaką rolę pełni opcja Rebuild Solution w porównaniu z Clean Solution?
Rebuild Solution najpierw czyści projekt, a potem kompiluje go od nowa. Clean Solution wykonuje tylko etap czyszczenia bez ponownej kompilacji.
Czy Clean Solution usuwa pliki źródłowe programu?
Nie. Opcja usuwa tylko pliki wygenerowane przez środowisko podczas budowania, a kod źródłowy pozostaje bez zmian.
Dlaczego usuwanie plików tymczasowych może rozwiązać problemy z kompilacją?
Bo stare lub uszkodzone pliki pośrednie mogą powodować konflikty z aktualnym kodem. Po ich usunięciu środowisko tworzy je ponownie na podstawie bieżącej wersji projektu.
Kiedy warto użyć opcji Clean Solution?
Warto jej użyć, gdy projekt zachowuje się nieprawidłowo po kompilacji, zawiera stare pliki wynikowe albo trzeba wymusić budowanie od czystego stanu.
Dlaczego analiza wymagań klienta jest pierwszym krokiem w tworzeniu aplikacji?
Bo najpierw trzeba ustalić, co aplikacja ma robić i jakie problemy rozwiązać. Dopiero na tej podstawie można projektować architekturę, interfejs, bazę danych i testy.
Dlaczego analiza wymagań powinna być wykonana przed projektowaniem aplikacji?
Najpierw trzeba wiedzieć, czego potrzebuje klient i użytkownicy. Bez tego architektura, interfejs i funkcje mogą zostać zaprojektowane niezgodnie z oczekiwaniami.
Co obejmuje analiza wymagań klienta?
Obejmuje zebranie potrzeb użytkownika, określenie funkcji systemu, ograniczeń technicznych, oczekiwań biznesowych oraz warunków działania aplikacji.
Czym różnią się wymagania funkcjonalne od niefunkcjonalnych?
Wymagania funkcjonalne opisują, co system ma robić. Wymagania niefunkcjonalne opisują jakość działania systemu, np. szybkość, bezpieczeństwo lub dostępność.
Co może być źródłem wymagań dla aplikacji?
Źródłem wymagań mogą być rozmowy z klientem, obserwacja pracy użytkowników, dokumentacja firmy, przepisy prawne, ankiety oraz analiza istniejących systemów.
Dlaczego nie zaczyna się tworzenia aplikacji od projektowania architektury systemu?
Architektura powinna wynikać z wymagań. Bez ich poznania łatwo zaprojektować rozwiązanie niedopasowane do potrzeb klienta.
Dlaczego tworzenie przypadków testowych nie jest pierwszym krokiem budowy aplikacji?
Przypadki testowe tworzy się na podstawie znanych wymagań. Najpierw trzeba ustalić, co system ma robić, a dopiero potem można planować, jak to sprawdzać.
W jaki sposób analiza wymagań wpływa na późniejsze testowanie aplikacji?
Na podstawie wymagań tworzy się scenariusze i przypadki testowe. Jeśli wymagania są niejasne, trudno sprawdzić, czy aplikacja działa poprawnie.
Kiedy opracowuje się architekturę systemu?
Architekturę systemu projektuje się po zebraniu i zrozumieniu wymagań. Dzięki temu można dobrać odpowiednie technologie, strukturę modułów i sposób komunikacji elementów systemu.
Jakie mogą być skutki pominięcia lub złego wykonania analizy wymagań?
Może to prowadzić do błędnych funkcji, opóźnień, dodatkowych kosztów i niezadowolenia klienta. Często oznacza też konieczność przebudowy części systemu.
Jakie mogą być skutki pominięcia analizy wymagań?
Może powstać aplikacja niezgodna z potrzebami klienta, wymagająca kosztownych poprawek. Często prowadzi to do opóźnień, konfliktów i wzrostu kosztów projektu.
Jakiego elementu HTML używa się w Bootstrap 4 do umieszczenia linków nawigacyjnych w navbarze?
Do grupowania linków w menu używa się elementu <ul> z klasą "navbar-nav". Wewnątrz znajdują się elementy <li class="nav-item"> oraz linki <a class="nav-link">.
Jaką rolę pełni element <ul class="navbar-nav"> w menu Bootstrap 4?
Jest kontenerem listy linków nawigacyjnych w navbarze. Wewnątrz umieszcza się elementy <li class="nav-item"> oraz odnośniki <a class="nav-link">.
Do czego służy komponent Navbar w Bootstrapie?
Navbar służy do tworzenia paska nawigacyjnego strony, czyli menu z linkami do najważniejszych sekcji lub podstron.
Dlaczego odpowiedź z elementem <ol> jest niepoprawna w tym zadaniu?
Dokumentacja Bootstrap 4 wskazuje użycie listy nieuporządkowanej <ul class="navbar-nav">. Element <ol> oznacza listę uporządkowaną i nie jest tu zgodny z podanym wzorcem.
Dlaczego w tym zadaniu poprawny jest znacznik <ul>, a nie <ol>?
Dokumentacja Bootstrap 4 wskazuje użycie elementu <ul class="navbar-nav">. Menu nawigacyjne jest tu definiowane jako lista nieuporządkowana, a nie numerowana.
Jaki element HTML powinien zawierać listę linków w Bootstrap Navbar?
W Bootstrap 4 lista linków powinna być zapisana jako element `<ul>` z klasą `navbar-nav`.
Jaką rolę pełni klasa "navbar-nav" w Bootstrap 4?
Klasa "navbar-nav" formatuje listę jako część menu nawigacyjnego w pasku navbar. Nadaje odpowiedni układ i styl elementom menu.
Jakie klasy należy dodać do elementów wewnątrz listy navbar-nav?
Do elementów listy dodaje się klasę .nav-item, a do linków wewnątrz tych elementów klasę .nav-link. Dzięki temu Bootstrap nadaje im odpowiedni wygląd i zachowanie.
Jaką klasę nadaje się pojedynczemu elementowi listy w menu Bootstrap Navbar?
Pojedynczy element listy `<li>` powinien mieć klasę `nav-item`.
Jak poprawnie zbudować pojedynczy element menu w navbarze Bootstrap 4?
Pojedynczy element tworzy się jako <li class="nav-item"><a class="nav-link" href="#">Link</a></li>. Klasa "nav-item" dotyczy elementu listy, a "nav-link" samego odnośnika.
Jak zbudować podstawową strukturę menu Navbar w Bootstrap 4?
Najpierw tworzy się kontener <nav class="navbar ...">, a w nim listę <ul class="navbar-nav">. Następnie dodaje się elementy <li class="nav-item"> z linkami <a class="nav-link">.
Jaką klasę powinien mieć odnośnik znajdujący się w elemencie menu?
Odnośnik `<a>` w menu powinien mieć klasę `nav-link`, dzięki której otrzymuje styl zgodny z Bootstrapem.
Jakie klasy w Bootstrap 4 odpowiadają za responsywne rozwijanie lub zwijanie paska nawigacyjnego?
Służą do tego klasy typu "navbar-expand-sm", "navbar-expand-md", "navbar-expand-lg" i "navbar-expand-xl". Określają one, od jakiej szerokości ekranowej navbar ma być rozwinięty poziomo.
Do czego służą klasy .navbar-dark i .navbar-light w Bootstrap 4?
Określają kolorystykę tekstu i linków w pasku nawigacyjnym. .navbar-dark stosuje się zwykle do ciemnego tła, a .navbar-light do jasnego.
Czym różni się `navbar-dark` od `navbar-light`?
`navbar-dark` stosuje się zwykle na ciemnym tle, aby linki były jasne. `navbar-light` stosuje się na jasnym tle, aby linki były ciemne.
Do czego służą klasy "navbar-dark" i "navbar-light" w Bootstrap 4?
Określają kolorystykę tekstu i linków w navbarze względem tła. "navbar-dark" stosuje jaśniejsze napisy na ciemnym tle, a "navbar-light" ciemniejsze napisy na jasnym tle.
Jakie znaczenie mają klasy .navbar-expand-sm, .navbar-expand-md, .navbar-expand-lg i .navbar-expand-xl?
Sterują responsywnością paska nawigacyjnego. Określają, od jakiej szerokości ekranu navbar ma być rozwinięty poziomo, a poniżej tej szerokości może się zwijać.
Do czego służą klasy `navbar-expand-sm`, `navbar-expand-md`, `navbar-expand-lg` i `navbar-expand-xl`?
Określają, od jakiej szerokości ekranu pasek nawigacyjny ma być rozwinięty poziomo. Na mniejszych ekranach może zostać zwinięty.
Jak zmienić kolor tła paska nawigacyjnego w Bootstrapie?
Można użyć klas tła, takich jak `bg-primary`, `bg-success`, `bg-dark`, `bg-light`, `bg-warning` lub `bg-danger`.
Na czym polega dziedziczenie w programowaniu obiektowym?
Dziedziczenie polega na tworzeniu nowej klasy na podstawie już istniejącej. Nowa klasa przejmuje pola i metody klasy bazowej oraz może dodawać własne elementy lub zmieniać działanie odziedziczonych metod.
Kiedy warto zastosować dziedziczenie między klasami?
Wtedy, gdy nowa klasa jest szczególnym przypadkiem już istniejącej klasy i ma z nią relację „jest rodzajem”. Pozwala to ograniczyć powielanie kodu i uporządkować model obiektowy.
Kiedy warto zastosować dziedziczenie?
Dziedziczenie stosuje się, gdy nowa klasa jest bardziej szczegółową wersją istniejącej klasy, np. `Samochod` jako szczególny przypadek klasy `Pojazd`. Relację tę często opisuje się jako „jest rodzajem”.
Czym różni się dziedziczenie od hermetyzacji?
Dziedziczenie służy tworzeniu klas bardziej szczegółowych na podstawie innych klas. Hermetyzacja dotyczy ukrywania danych i kontrolowania dostępu do pól oraz metod.
Czym różni się klasa bazowa od klasy pochodnej?
Klasa bazowa to klasa ogólna, z której dziedziczą inne klasy. Klasa pochodna to klasa bardziej szczegółowa, która przejmuje elementy klasy bazowej.
Czym różni się dziedziczenie od modyfikatorów dostępu?
Dziedziczenie opisuje relację między klasami i umożliwia rozszerzanie klasy bazowej. Modyfikatory dostępu określają, skąd można korzystać z pól, metod i klas, np. public, private, protected.
Jaki jest prosty przykład dziedziczenia?
Klasa `Zwierze` może zawierać metodę `Oddychaj()`, a klasy `Pies` i `Kot` mogą po niej dziedziczyć. `Pies` i `Kot` są bardziej szczegółowymi typami zwierząt.
Jaki związek ma dziedziczenie z nadpisywaniem metod?
Nadpisywanie metod jest często używane w klasie pochodnej, aby zmienić działanie metody odziedziczonej z klasy bazowej. To pozwala dopasować zachowanie bardziej szczegółowej klasy.
Czym dziedziczenie różni się od modyfikatorów dostępu?
Dziedziczenie określa relację między klasami i pozwala tworzyć klasy bardziej szczegółowe. Modyfikatory dostępu, takie jak `public`, `private` czy `protected`, określają widoczność pól i metod.
Dlaczego dziedziczenie nie służy do realizacji zadań asynchronicznych?
Asynchroniczność dotyczy sposobu wykonywania operacji w czasie, np. bez blokowania programu. Dziedziczenie dotyczy struktury klas i relacji między nimi, a nie mechanizmu wykonywania zadań.
Dlaczego odpowiedź o asynchronicznej realizacji zadań nie dotyczy dziedziczenia?
Asynchroniczność odnosi się do sposobu wykonywania operacji w czasie, np. bez blokowania programu. Nie służy do tworzenia klas bardziej szczegółowych, więc nie opisuje dziedziczenia.
Czym dziedziczenie różni się od kodu asynchronicznego?
Dziedziczenie dotyczy struktury klas w programowaniu obiektowym. Kod asynchroniczny służy do wykonywania długotrwałych operacji bez blokowania działania programu.
Dlaczego dziedziczenie nie jest mechanizmem do przechowywania stałych wartości?
Stałe wartości definiuje się zwykle jako stałe lub pola statyczne, a nie przez tworzenie klas pochodnych. Dziedziczenie ma na celu specjalizację klas, a nie organizację niezmiennych danych.
Dlaczego stałe wartości w aplikacji nie są związane z dziedziczeniem?
Stałe służą do przechowywania niezmiennych danych, np. konfiguracji lub wartości liczbowych. Ich użycie nie tworzy relacji klasa bazowa–klasa pochodna.
Jak dziedziczenie wiąże się z nadpisywaniem metod?
Klasa pochodna może zmienić działanie metody odziedziczonej z klasy bazowej. Taką zmianę nazywa się nadpisywaniem metody.
Jak dziedziczenie wspiera polimorfizm?
Dzięki dziedziczeniu obiekty klas pochodnych mogą być traktowane jak obiekty klasy bazowej. Pozwala to pisać bardziej uniwersalny kod, który działa na wspólnym typie.
Jak po angielsku nazywają się testy wydajnościowe?
Testy wydajnościowe to po angielsku performance testing. Ten termin dotyczy badania szybkości, obciążenia i stabilności działania systemu.
Co oznacza termin performance testing?
Performance testing to testy wydajnościowe, czyli sprawdzanie, jak aplikacja działa pod względem szybkości, stabilności i zużycia zasobów. Bada się m.in. czas odpowiedzi, przepustowość i zachowanie systemu pod obciążeniem.
Czym różnią się testy wydajnościowe od testów funkcjonalnych?
Testy funkcjonalne sprawdzają, czy aplikacja działa zgodnie z wymaganiami. Testy wydajnościowe badają, jak szybko i stabilnie działa pod obciążeniem.
Czym testy wydajnościowe różnią się od testów jednostkowych?
Testy jednostkowe sprawdzają poprawność małych fragmentów kodu, np. pojedynczych metod lub funkcji. Testy wydajnościowe oceniają, jak szybko i stabilnie działa aplikacja przy określonym obciążeniu.
Czego zwykle dotyczą testy wydajnościowe w aplikacji?
Najczęściej mierzą czas odpowiedzi, zużycie zasobów, przepustowość oraz zachowanie systemu przy wielu użytkownikach jednocześnie.
Czym są testy integracyjne?
Testy integracyjne sprawdzają współpracę kilku modułów lub komponentów systemu. Ich celem jest wykrycie błędów pojawiających się na styku części aplikacji.
Dlaczego znajomość angielskich nazw rodzajów testów jest ważna w IT?
Dokumentacja, narzędzia i ogłoszenia o pracę często używają angielskich terminów. Znajomość takich nazw ułatwia naukę i pracę z materiałami technicznymi.
Czym są testy bezpieczeństwa?
Testy bezpieczeństwa, czyli security testing, służą do wykrywania podatności aplikacji na ataki. Sprawdza się np. autoryzację, uwierzytelnianie, podatność na SQL injection lub XSS.
Jakie inne podstawowe rodzaje testów można łatwo pomylić z testami wydajnościowymi?
Często mylone są z unit testing, integration testing i security testing. Każdy z tych typów bada inny aspekt jakości oprogramowania.
Jakie parametry mierzy się podczas testów wydajnościowych?
Najczęściej mierzy się czas odpowiedzi, liczbę obsłużonych żądań na sekundę, obciążenie procesora, zużycie pamięci oraz stabilność działania systemu w czasie.
Dlaczego znajomość angielskich nazw rodzajów testów jest ważna na egzaminie INF.04?
W dokumentacji technicznej i narzędziach programistycznych często używa się terminów angielskich. Trzeba umieć powiązać np. unit testing z testami jednostkowymi, integration testing z integracyjnymi, a performance testing z wydajnościowymi.