Podstawy testowania oprogramowania obiektowego 1)

Wielkość: px
Rozpocząć pokaz od strony:

Download "Podstawy testowania oprogramowania obiektowego 1)"

Transkrypt

1 Podstawy testowania oprogramowania obiektowego 1) Ilona Bluemke Instytut Informatyki Politechniki Warszawskiej ul. Nowowiejska 15/ Warszawa ibl@ii.pw.edu.pl Streszczenie. W pracy przedstawiono podstawy testowania oprogramowania napisanego w językach obiektowych. Zwrócono uwagę na fakt, że testowanie programów obiektowych wymaga nie mniejszego wysiłku, niż testowanie programów napisanych w językach strukturalnych. Wzrost złożoności testowania wynika z podstawowych cech języków obiektowych takich jak hermetyzacja, dziedziczenie, polimorfizm czy dynamiczne wiązanie. Podano także pewne wskazówki praktyczne dotyczące testowania klas. Słowa kluczowe: inżynieria oprogramowania, programowanie obiektowe, jakość oprogramowania, testowanie obiektowe, aksjomaty testowania 1. Wprowadzenie Testowanie oprogramowania jest jednym ze środków pozwalających zapewnić wysoką jakość oprogramowania. Celem testowania jest wykrycie jak największej liczby błędów wykonania programu przy minimalnym koszcie. Właściwy test powinien wykrywać błędne zachowanie programu niepoprawne wyniki, czy zachowanie niezgodnie z oczekiwaniami użytkownika. Koszty testowania to 40% do 80 % kosztów produkcji oprogramowania stąd redukcja tych kosztów i poprawa jakości testowania są ważnym problemem od lat przyciągającym uwagę informatyków. W ostatnim trzydziestoleciu lat zaproponowano wiele strategii testowania i metod zwiększania niezawodności oprogramowania np. przeglądy kodu, testowanie ścieżek, testowanie struktur sterujących, analiza wartości brzegowych czy symboliczne wykonywanie. Metody te zostały zaproponowane dla oprogramowania strukturalnego i większość z nich nie nadaje się zbyt dobrze do testowania oprogramowania obiektowego. Od końca lat osiemdziesiątych prowadzone są prace nad metodami testowania dostosowanymi do testowania programów pisanych w językach obiektowych. Poniżej przedstawiono podstawy testowania oprogramowania obiektowego. W celu osiągnięcia akceptowalnego poziomu niezawodności konieczne jest testowanie ukierunkowane na wyszukiwanie defektów ( defect testing ) w programie [9]. Zaproponowano następujące podejścia do testowania : 1) Praca została wykonana w ramach grantu JM Rektora PW nr 503/G/1032/1570/200.

2 1. Funkcjonalne (black box) testy są wyprowadzane ze specyfikacji oprogramowania. Program jest traktowany jako czarna skrzynka, której zachowanie może być określone na podstawie wejść i odpowiadających im wyjść. Celem testowania jest określenie, czy program spełnia funkcjonalne i niefunkcjonalne (np. wydajnościowe) wymagania. 2. Strukturalne (white box) testy są wyprowadzane na podstawie znajomości struktury programu. Cechą charakterystyczną tego podejścia jest sprawdzanie pokrycia programu np. sprawdzenie, czy wykonano wszystkie instrukcje, skoki, ścieżki przepływu danych. W praktyce stosuje się łącznie oba podejścia. Testowanie funkcjonalne określa na ile program spełnia specyfikację wykonuje funkcje oczekiwane od niego, ale nie określa, które jego części są wykonywane by wypełnić poszczególne wymagania w specyfikacji. Testowanie strukturalne może więc być jego uzupełnieniem. Zazwyczaj testowanie strukturalne stosuje się do niewielkich fragmentów oprogramowania np. do testowania jednostek. Testowanie funkcjonalne także może być użyte do testowania jednostek, jednak stosuje się je także do testowania większych fragmentów podsystemów, systemów. 2. Aksjomaty testowania obiektowego Aksjomaty testowania dla programów napisanych w językach strukturalnych zostały podane przez Weyuker w 1986 [10]. Było to osiem aksjomatów równoważności testów i danych testowych. W 1988 roku zostały dodane przez Weyuker [11] jeszcze trzy aksjomaty. Aksjomaty testowania oprogramowania strukturalnego Weyuker zostały przejrzane przez Perry ego i Kaisera pod kątem ich przydatności dla oprogramowania napisanego w językach obiektowych. W pracy [7] omówiono aksjomaty mające zastosowanie przy testowaniu oprogramowania obiektowego. Pewne z aksjomatów podanych przez Weyuker są intuicyjnie oczywiste dla programów obiektowych. Są to: Stosowalność (applicability) Dla każdego programu istnieje właściwy zbiór testów tzn. testów spełniających wymagane kryterium testowania. Nie wyczerpująca stosowalność (non-exhaustive applicability) Program P ma właściwy zbiór testów T, zbiór T nie jest wyczerpującym zbiorem testów (wszystkich możliwych). Monotoniczność (monotonicity) Jeżeli zbór testów T jest właściwy dla programu P i T jest podzbiorem zbioru T, to T jest także właściwy dla programu P. Niewłaściwość zbioru pustego (inadequate empty set) Nie ma programu dla którego pusty zbiór testów jest właściwy. Aksjomaty te stosują się do wszystkich programów niezależnie od języka programowania, w którym zostały napisane i nadają się zarówno do testowania strukturalnego jak i funkcjonalnego. Trzy inne aksjomaty Weyuker są także intuicyjnie oczywiste dla programów obiektowych, są to: Przemianowanie (renaming) Niech program P będzie przemianowaniem Q. Test T jest właściwy dla P tylko wtedy, gdy jest on właściwy dla Q. Program P jest przemianowaniem Q jeśli jest identyczny z Q z dokładnością do instancji

3 (np. zmiennej) o nazwie x z programu Q, która została nazwana y w P i identyfikator y nie występuje w Q. Jest to także prawdziwe dla zbioru przemianowań. Złożoność (complexity) Dla każdego n istnieje program P taki, że P jest właściwie testowany (testami spełniającymi wymagane kryterium testowania) przez zbiór testów o wielkości n, ale nie przez zbiór o wielkości n-1. Pokrycie instrukcji (statement coverage) Jeśli zbiór testów T jest właściwy dla P, przy kryterium testowania, którym jest pokrycie instrukcji, to T powoduje wykonanie każdej wykonywalnej instrukcji z P. Aksjomat pokrycia instrukcji jest przykładem aksjomatu stosowalności. Aksjomaty złożoności i przemianowania są stosowane do testowania strukturalnego jak i funkcjonalnego. Aksjomat pokrycia instrukcji stosuje się do testowania strukturalnego. Poniżej przedstawiono pozostałe cztery aksjomaty dotyczące testowania części programu i ich relacji z całym programem. Wskazują one na nieadekwatność pewnych testów dla programów obiektowych. Anty rozszerzalość (antiextensionality) Jeżeli dwa programy obliczają tę samą funkcję (są bliskie semantycznie) to właściwy dla jednego z nich test strukturalny niekoniecznie jest właściwy dla drugiego. Programy te mogą mieć inną implementację i test pokrywający np. wszystkie ścieżki grafu przepływu sterowania jednego z nich, nie będzie pokrywał drugiego programu (napisanego wg zupełnie innego algorytmu i mającego inny graf przepływu sterowania). Testy bazujące na specyfikacji (funkcjonalne) mogą być właściwe, gdyż oba programy obliczają tę samą funkcję. Zmiana semantyczna (general multiple change) Jeśli dwa programy są syntaktycznie podobne mają podobną budowę (jeden można otrzymać z drugiego poprzez zmianę stałych i/lub operatorów) to wymagają one różnych zbiorów testów. Jeśli test strukturalny jest właściwy dla jednego programu np. wymusza wykonanie obu gałęzi każdej instrukcji warunkowej, to nowy operator relacyjny i/lub stała w predykacie może wymusić inny test pokrywający gałęzie instrukcji warunkowej. Anty dekompozycja (antidecomposition) Testowanie podprogramu w kontekście otaczającego go programu może być właściwe, jednak po zmianie tego kontekstu (otoczenia podprogramu) może nie być wystarczające, czyli nie będzie wystarczające dla innych użyć komponentu. Aksjomat ten dotyczy testowania funkcjonalnego i strukturalnego. Test funkcjonalny może być adekwatny dla pewnego otoczenia A, które nie zawiera jakiejś funkcjonalności występującej w specyfikacji innego otoczenia B. Nie będzie ten test właściwy dla specyfikacji B. Program może być właściwie przetestowany strukturalnie nawet jeśli zawiera kod nieosiągalny i kod ten nie został przetestowany w otoczeniu A. Jednak w innym otoczeniu kod ten może być osiągalny i test nie będzie go pokrywał. Anty kompozycja (anticomposition) Właściwe testowanie komponentów programu w izolacji może nie być wystarczające do przetestowania całego programu. Kompozycja dwóch komponentów programu powoduje powstawanie interakcji, które nie mają miejsca w izolacji. Np. komponent A wywołuje kilka razy komponent B lub są one wzajemnie rekursywne. W obu przypadkach programy mogą modyfikować kontekst widziany przez drugi

4 komponent w sposób bardziej złożony niż przy indywidualnym testowaniu komponentów. Aksjomat ten dotyczy testowania strukturalnego i funkcjonalnego. 3. Wpływ cech języków obiektowych na testowanie Testowanie oprogramowania obiektowego [3] musi być dostosowane do cech języków obiektowych. Cechy oprogramowania obiektowego takie jak np. hermetyzacja, dziedziczenie, polimorfizm, dynamiczne wiązanie są bardzo wygodne i korzystne przy projektowaniu i programowaniu ale stwarzają pewne problemy podczas testowania. Hermetyzacja oznacza zamknięcie w obiekcie atrybutów i operacji które obiekt może wykonywać ( lub które można wykonywać na obiekcie). Operacje są udostępnione poprzez interfejs a szczegóły implementacyjne są ukryte wewnątrz. Interakcje pomiędzy obiektami są niełatwe do zrozumienia, wyobrażenia sobie, toteż przygotowanie testów interakcji obiektów jest sprawą trudną [4]. Dziedziczenie oznacza, że własności zdefiniowane dla klasy są dostępne (zostały odziedziczone) przez jej podklasy (o ile nie zostały w nich inaczej zdefiniowane). Metoda, która została przetestowana i jest poprawna w klasie bazowej może nie być poprawna w kontekście podklasy [7]. Polimorfizm oznacza, że atrybut może być różnych typów, metoda może mieć różne implementacje. Dynamiczne wiązanie kodu oznacza, że operacja nie jest znana do czasu wykonania. Cechy te czynią testowanie bardzo trudnym, gdyż dokładnego typu atrybutu czy implementacji operacji nie da się określić statycznie. Poniżej opisano wpływ hermetyzacji, dziedziczenia, polimorfizmu i dynamicznego wiązania na testowanie programów obiektowych opracowany na podstawie prac [7] i [8]. Hermetyzacja Hermetyzacja w językach obiektowych powoduje, że zmiana w implementacji przy zachowanym interfejsie zewnętrznym nie powinna wpływać na inne obiekty. Intuicja oparta na testowaniu funkcjonalnym podpowiada nam, że w takim przypadku wystarczy ograniczyć testowanie do obiektu zmodyfikowanego. Aksjomat anty kompozycji powiada, że należy także ponownie przetestować wszystkie obiekty zależne od modyfikowanego. Pokazana na rys. 1 klasa A zawiera metodę M, która została właściwie przetestowana w kontekście klasy A. Klasa B jest podklasą klasy A. Klasa B dziedziczy metodę M, nie zastępuje jej własną realizacją. Zgodnie z aksjomatem anty kompozycji należy przetestować metodę M w kontekście klasy B, mogą pojawić się bowiem nowe błędy wynikające z rozszerzonego kontekstu np. na rys. 1 pokazano konflikt zmiennej x (ustawianej przez metodę M klasy A i metodę L klasy B). Powyższy przykład pokazuje, że testowanie integracyjne jest zawsze konieczne jako uzupełnienie testowania jednostek, niezależnie od stosowanego języka programowania.

5 Klasa A Zmienne : x,... Metody: M,... M ustawia x na 1 nadklasa Klasa B Zmienne :... Metody: L,... L ustawia x na 0 podklasa Rys. 1 Konflikt zmiennej x Dziedziczenie W językach programowania obiektowych jeżeli jest modyfikowana klasa to konieczne i wystarczające będzie przetestowanie tej klasy i wszystkich klas od niej jawnie zależnych. Jeżeli modyfikowana jest nadklasa to należy przetestować wszystkie jej podklasy, gdyż są one zależne dziedzicząc jej metody. Aksjomat anty kompozycji mówi, że jeśli dodajemy nową podklasę (lub modyfikujemy istniejącą podklasę) to musimy przetestować metody odziedziczone z każdej klasy będącej jej przodkiem (nadklasą). Jest pewien przypadek w którym ponowne testowanie metod odziedziczonych z nadklasy nie jest konieczne. Chodzi o sytuację, w której podklasa jest czystym rozszerzeniem klasy będącej jej przodkiem tzn. dodaje nowe metody lub zmienne, ale nie ma żadnych zależności pomiędzy zmiennymi i metodami nowymi i odziedziczonymi. Polimorfizm W językach obiektowych podklasa może zastąpić metodę odziedziczoną poprzez lokalną definicję metody o tej samej nazwie. Jest oczywiste, że podklasa przykrywająca metodę powinna być przetestowana, jednak nie tak oczywistym jest to, że często konieczne są inne zbiory testów fakt ten podkreśla aksjomat anty rozszerzalności. Rozważmy sytuację pokazaną na rys. 2, w której klasa A zawierająca metodę M ma podklasę B. Klasa B nie ma lokalnej definicji metody M. Niech obiekt O będący instancją klasy B otrzyma komunikat powodujący wykonanie metody M. Metoda M w zastosowaniu do obiektu O była właściwie przetestowana. Jeżeli klasa B doda własną definicję metody M, która ma taki interfejs jak metoda M z klasy A A.M, to oczywista jest konieczność ponownego przetestowania klasy B. Aksjomat anty rozszerzalności przypomina, że należy opracować nowe przypadki testowe z dwóch powodów: 1. Jest wysoce prawdopodobne, że nowa definicja metody wpływa nie tylko na wewnętrzną strukturę klasy ale także zmienia jej specyfikację funkcjonalną

6 inne jest zewnętrzne zachowanie tej klasy. W takim przypadku konieczne są także inne testy funkcjonalne. Klasa A Metody: M, N... nadklasa Klasa A Metody: M,... Klasa B Metody:... podklasa Klasa B Metody: M... Metoda B.M nie wymaga testowania Rys. 2 Metoda B.M wymaga testowania 2. W testowaniu strukturalnym dąży się do pokrycia gałęzi lub instrukcji programu. Jeżeli instrukcje lub gałęzie są różne (a taki jest zazwyczaj cel nowej definicji np. inny algorytm) w obu realizacjach, to test pokrywający A.M może nie pokryć B.M. Dziedziczenie wielopoziomowe i wielobazowe Powyżej przedstawiono dwustronną zależność pomiędzy klasą i nadklasą powodującą konieczność testowania odziedziczonych metod w kontekście definiującym i każdym kontekście odziedziczonym. Nie uwzględniono wpływu aksjomatu anty rozszerzalności na to dodatkowe testowanie. Różne zbiory testów mogą być potrzebne w każdym punkcie łańcucha dziedziczenia, pomiędzy klasą przodkiem definiującą zastępowaną metodę i klasą potomkiem definiującą metodę zastępującą. Klasa A Metody: M, N... (M korzysta z N) Klasa B Metody: M,... (M używa N z A) Klasa C Metody: N... (M z B używa N z C) Rys.3 Łańcuch dziedziczenia

7 Na przykład pokazana na rys. 3 klasa A ma metody M i N, metoda M używa metody N. Klasa B jest podklasą klasy A i ma własną metodę M, która korzysta z metody N z klasy A. Klasa C jest potomkiem klasy B, definiuje własną metodę N, przykrywającą metodę N odziedziczoną z A i nie ma własnej definicji metody M. Aksjomat anty rozszerzalności mówi o różnych dla klas A, B, C danych testowych dla metody M. Jest to oczywiste dla A i B gdyż korzystają one z różnych metod M, nawet jeśli metody te są bliskie semantycznie to dane właściwe dla jednej klasy mogą nie być właściwe dla drugiej. Dla klas B i C jest to mniej oczywiste, gdyż używają one tej samej metody M. Jednak w klasie B metoda M wywołuje metodę A.N a w klasie C metodę B.N. Konieczne są różne zbiory testów, gdyż wysoce prawdopodobne jest że A.N i B.N mają inną funkcjonalność i/lub strukturę. Pewne języki obiektowe pozwalają na dziedziczenie wielobazowe. Niech klasa C dziedziczy po klasach A i B. Obie klasy A i B zawierają definicję metody M, a klasa C nie redefiniuje tej metody. Jeżeli kolejność dziedziczenia ustalono na najpierw A potem B to klasa C będzie używać metody A.M. Po zmianie kolejności nadklas na B potem A, klasa C odziedziczy metodę B.M zamiast jak poprzednio A.M. Klasa C musi być wówczas ponownie przetestowana. Nie ma powodu zakładać by A.M i B.M były semantycznie lub składniowo podobne a nawet jeśli są, to aksjomaty anty rozszerzalności i zmiany semantycznej przypominają o konieczności przygotowania innych zbiorów testów. Przepływ sterowania Innym problemem jest przepływ sterowania w programach obiektowych inny niż w konwencjonalnych. Podczas wykonywania programu obiektowego obiekty są tworzone, wykonują swoje metody, zmienia się ich stan, w końcu są niszczone. Przepływ sterowania w takich programach można widzieć jako przekazywanie komunikatów z jednego obiektu do drugiego powodujący wykonanie przez obiekt odbierający pewnej operacji, której rezultatem może być np. badanie lub zmiana stanu obiektu. W testowaniu takich programów bardziej właściwe niż określanie wejścia/wyjścia jest określanie zmian stanów obiektu pod pewnymi warunkami. W niektórych językach obiektowych obiekty mogą być niezależnymi współbieżnymi jednostkami. Wysłanie dwóch komunikatów z jednego obiektu do dwóch innych może powodować ich równoległe działanie. Ze względu na różnorodne zależności czasowe i wiele sytuacji, które należy rozważyć i sprawdzić, testowanie takich systemów jest bardzo skomplikowane. Dynamiczne wiązanie Pewne języki obiektowe np. Smalltalk, C++ pozwalają na dynamiczne wiązanie komunikatu z metodą. W języku C++ wskazanie na obiekt, referencja do obiektu może dotyczyć nie tylko obiektów zadeklarowanej klasy ale i jej potomków. Kiedy wykonywana jest operacja na obiekcie, funkcja zadeklarowana jako wirtualna, dynamicznie wiąże implementację tej funkcji z właściwą funkcją dla wykonywanego typu obiektu. Różne implementacje funkcji ustalą różne relacje w programie a analiza statyczna nie zawsze jest w stanie precyzyjnie określić wszystkie możliwe zależności. W praktyce stosowane są następujące rozwiązania [12]: Analiza najgorszego przypadku - brane są pod uwagę wszystkie możliwe implementacje funkcji i rozważa się zależności jakie one wprowadzają. Analiza dynamiczna program jest wykonywany dla różnych przypadków testowych, bada się rzeczywistą klasę, faktycznie wykonywaną funkcję.

8 Przypadki testowe mogą nie wykryć wszystkich możliwych zachowań programu i mogą być wyciągnięte nieprawidłowe wnioski. Interwencja użytkownika - człowiek wymusza powstanie obiektu określonej klasy. Analiza systemu też może być nieprawidłowa człowiek może wyciągnąć błędne wnioski. 4. Uwagi końcowe W pracy przedstawiono podstawowe problemy związane z testowaniem oprogramowania obiektowego. Uwzględniono takie cechy języków obiektowych jak hermetyzacja, dziedziczenie, polimorfizm, czy dynamiczne wiązanie. Podano także pewne wskazówki praktyczne np.: 1. Jeżeli dodajemy podklasę to odziedziczone metody powinny być przetestowane w nowo utworzonym kontekście. 2. Jeżeli kolejność specyfikacji podklas została zmieniona to podklasy powinny być ponownie testowane. 3. Nawet jeśli zastępowane metody są podobne semantycznie, to klasa powinna być testowana w kontekście metod zastępujących. Nie poruszono wielu innych problemów testowania oprogramowania obiektowego np. testowania ścieżek komunikatów [2, 5], czy zmian stanów obiektów i tematyki automatycznej generacji testów [1, 6]. Literatura [1] Binder R. (editor), Object-Oriented Software Testing, CACM, 9 (1994), [2] Jorgensen P. C. Ericson C., Object Oriented Integration Testing, CACM, 9 (1994) [3] Kung D.C., Hsia P., Gao J., (editors), Testing Object-Oriented Software, IEEE Computer Society, (1998) [4] Letovski S., Soloway E., Delocalized Plans and Program Comprehension, IEEE Trans. Software, 3 (1986), [5] Murphy G.C. et al. Experiences with Cluster and Class Testing, CACM, 9(1994) [6] Poston R.M., Automated Testing from Object Models, CACM, 9 (1994) [7] Perry D.E., Kaiser G.E., Adequate Testing and Object-Oriented Programming, J. Object-Oriented Programming, Jan.-Feb 1990, [8] Smith M.D., Robson D.J., Object-Oriented Programming the Problems of Validation, Proc. IEEE Conf. Software Maintenance, IEEE Society Press, Los Alamitos 1990, [9] Sommerville I., Software Engineering,fifth edition, Addison Wesley 1996 [10] Weyuker E.J., Axiomating Software Test Data Adequacy, IEEE Trans. Software, 12 (1986), [11] Weyuker E.J., The Evaluation of Program-Based Software Test Data Adequacy Criteria, CACM, 6 (1988), [12] Wilde N., Huit R., Maintenance Support for Object-Oriented Programs, IEEE Trans. Software, 12 (1992)

9 dane o autorze: dr inż. Ilona Bluemke jest pracownikiem Instytutu Informatyki Politechniki Warszawskiej Abstract In this paper main problems of testing object programs are presented. Weyuker axioms for adequacy of test and test data (applicability, non-exaustive applicability, monotonicity, complexity, inadequate empty set, anticomposition, antidecomposition, statement coverage, renaming, antiextensionality, general multiple change) are discussed in the context of object programs. The role of object properties (encapsulation, inheritance, polymorphism, dynamic bindings) in the testing process is pointed out. Some practical hints to object testing are also given. Keywords: software engineering, object oriented testing, axioms of testing, properties of object programs

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Środowisko wspomagające testowanie oprogramowania obiektowego

Środowisko wspomagające testowanie oprogramowania obiektowego Środowisko wspomagające testowanie oprogramowania obiektowego Sebastian Nowak e-mail: snowak1@ii.pw.edu.pl Ilona Bluemke e-mail: I.Bluemke@ii.pw.edu.pl Instytut Informatyki, Politechnika Warszawska Nowowiejska

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017 Wykład 12 7 czerwca 2017 Czym jest UML? UML składa się z dwóch podstawowych elementów: notacja: elementy graficzne, składnia języka modelowania, metamodel: definicje pojęć języka i powiazania pomiędzy

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

Testowanie oprogramowania. Testowanie oprogramowania 1/34

Testowanie oprogramowania. Testowanie oprogramowania 1/34 Testowanie oprogramowania Testowanie oprogramowania 1/34 Testowanie oprogramowania 2/34 Cele testowania testowanie polega na uruchamianiu oprogramowania w celu wykrycia błędów, dobry test to taki, który

Bardziej szczegółowo

Modelowanie i Programowanie Obiektowe

Modelowanie i Programowanie Obiektowe Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do

Bardziej szczegółowo

Programowanie Obiektowe i C++

Programowanie Obiektowe i C++ Programowanie Obiektowe i C++ Marcin Benke 2.10.2006 Dzisiaj Co umiemy Paradygmaty programowania Co będzie na wykładach Zasady zaliczania Programowanie obiektowe Co umiemy Programowałem w C++ Programowałem

Bardziej szczegółowo

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Bardziej szczegółowo

Programowanie Obiektowe i C++ Marcin Benke

Programowanie Obiektowe i C++ Marcin Benke Programowanie Obiektowe i C++ Marcin Benke Dzisiaj Co umiemy Paradygmaty programowania Co będzie na wykładach Zasady zaliczania Programowanie obiektowe Co umiemy Programowałem w C++ Programowałem w języku

Bardziej szczegółowo

Wykład 8. Testowanie w JEE 5.0 (1) Autor: Zofia Kruczkiewicz. Zofia Kruczkiewicz

Wykład 8. Testowanie w JEE 5.0 (1) Autor: Zofia Kruczkiewicz. Zofia Kruczkiewicz Wykład 8 Testowanie w JEE 5.0 (1) Autor: 1. Rola testowania w tworzeniu oprogramowania Kluczową rolę w powstawaniu oprogramowania stanowi proces usuwania błędów w kolejnych fazach rozwoju oprogramowania

Bardziej szczegółowo

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Problemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?

Problemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób? Problemy projektowania obiektowego Czy podobne problemy można rozwiązywac w podobny sposób? Czy te problemy można przedstawić w abstrakcyjny sposób, tak aby były pomocne w tworzeniu rozwiązań w różnych

Bardziej szczegółowo

Porównanie metod i technik testowania oprogramowania. Damian Ryś Maja Wojnarowska

Porównanie metod i technik testowania oprogramowania. Damian Ryś Maja Wojnarowska Porównanie metod i technik testowania oprogramowania Damian Ryś Maja Wojnarowska Testy oprogramowania Testowanie oprogramowania jest to proces związany z wytwarzaniem oprogramowania. Jest on jednym z procesów

Bardziej szczegółowo

Testowanie oprogramowania. Piotr Ciskowski

Testowanie oprogramowania. Piotr Ciskowski Testowanie oprogramowania Piotr Ciskowski TESTOWANIE testowanie o proces eksperymentalnego badania programu lub jego komponentu o próbne wykonanie w znanych warunkach o rejestrowanie wyników o ocena właściwości

Bardziej szczegółowo

Rysunek 1: Przykłady graficznej prezentacji klas.

Rysunek 1: Przykłady graficznej prezentacji klas. 4 DIAGRAMY KLAS. 4 Diagramy klas. 4.1 Wprowadzenie. Diagram klas - w ujednoliconym języku modelowania jest to statyczny diagram strukturalny, przedstawiający strukturę systemu w modelach obiektowych przez

Bardziej szczegółowo

Technologie obiektowe

Technologie obiektowe WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność

Bardziej szczegółowo

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu. Architektura Systemu Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu. Architektura jest zbiorem decyzji dotyczących: organizacji systemu komputerowego,

Bardziej szczegółowo

Wykład 7. Projektowanie kodu oprogramowania

Wykład 7. Projektowanie kodu oprogramowania Wykład 7 Projektowanie kodu oprogramowania Treść wykładu cykl życiowy oprogramowania zagadnienia inżynierii oprogramowania tworzenie oprogramowania z gotowych elementów tworzenie niezawodnego oprogramowania

Bardziej szczegółowo

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl Komputerowe Systemy Przemysłowe: Modelowanie - UML Arkadiusz Banasik arkadiusz.banasik@polsl.pl Plan prezentacji Wprowadzenie UML Diagram przypadków użycia Diagram klas Podsumowanie Wprowadzenie Języki

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Jakość w procesie wytwarzania oprogramowania

Jakość w procesie wytwarzania oprogramowania Jarosław Kuchta Jakość Oprogramowania http://www.eti.pg.gda.pl/katedry/kask/pracownicy/jaroslaw.kuchta/jakosc/ J.Kuchta@eti.pg.gda.pl Względny koszt wprowadzania zmian w zależności od fazy realizacji projektu

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie

Bardziej szczegółowo

Kumulowanie się defektów jest możliwe - analiza i potwierdzenie tezy

Kumulowanie się defektów jest możliwe - analiza i potwierdzenie tezy Kumulowanie się defektów jest możliwe - analiza i potwierdzenie tezy Marek Żukowicz 14 marca 2018 Streszczenie Celem napisania artykułu jest próba podania konstruktywnego dowodu, który wyjaśnia, że niewielka

Bardziej szczegółowo

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas Analiza i projektowanie obiektowe 2016/2017 Wykład 10: Tworzenie projektowego diagramu klas Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Projektowy

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.

Bardziej szczegółowo

Paweł Kurzawa, Delfina Kongo

Paweł Kurzawa, Delfina Kongo Paweł Kurzawa, Delfina Kongo Pierwsze prace nad standaryzacją Obiektowych baz danych zaczęły się w roku 1991. Stworzona została grupa do prac nad standardem, została ona nazwana Object Database Management

Bardziej szczegółowo

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy

Bardziej szczegółowo

ZARZĄDZANIU. Wykład VI. dr Jan Kazimirski

ZARZĄDZANIU. Wykład VI. dr Jan Kazimirski INFORMATYKA W ZARZĄDZANIU Wykład VI dr Jan Kazimirski jankazim@mac.edu.pl http://www.mac.edu.pl/jankazim MODELOWANIE SYSTEMÓW UML Literatura Joseph Schmuller UML dla każdego, Helion 2001 Perdita Stevens

Bardziej szczegółowo

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/ Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.

Bardziej szczegółowo

Wprowadzenie do programowanie obiektowego w języku C++

Wprowadzenie do programowanie obiektowego w języku C++ Wprowadzenie do programowanie obiektowego w języku C++ Część czwarta Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura

Bardziej szczegółowo

Testowanie I. Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego.

Testowanie I. Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego. Testowanie I Cel zajęć Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego. Testowanie oprogramowania Testowanie to proces słyżący do oceny

Bardziej szczegółowo

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Mgr inż. Witold BUŻANTOWICZ Wojskowa Akademia Techniczna SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD Streszczenie: W referacie przedstawiono możliwości

Bardziej szczegółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

Bardziej szczegółowo

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie

Bardziej szczegółowo

UPEDU: Implementacja (ang. Implementation discipline)

UPEDU: Implementacja (ang. Implementation discipline) Wydział Informatyki PB Wprowadzenie Inżynieria oprogramowania II Marek Krętowski e-mail: mkret@wi.pb.edu.pl http://aragorn.pb.bialystok.pl/~mkret Wykład 8: UPEDU: Implementacja (ang. Implementation discipline)

Bardziej szczegółowo

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki > C++ dziedziczenie Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1432108800 > Dziedziczenie Dziedziczenie C++ dziedziczenie 2 / 13 > Dziedziczenie Dziedziczenie * to

Bardziej szczegółowo

Wprowadzenie do systemów informacyjnych

Wprowadzenie do systemów informacyjnych Uwagi ogólne: Wprowadzenie do systemów informacyjnych Projektowanie obiektowe Obiektowość jest nową ideologią, która zmienia myślenie realizatorów SI z zorientowanego na maszynę na zorientowane na człowieka.

Bardziej szczegółowo

Tworzenie przypadków testowych

Tworzenie przypadków testowych Tworzenie przypadków testowych Prowadząca: Katarzyna Pietrzyk Agenda 1. Wprowadzenie 2. Wymagania 3. Przypadek testowy Definicja Schemat Cechy dobrego przypadku testowego 4. Techniki projektowania Czarnej

Bardziej szczegółowo

PROJEKTOWANIE. kodowanie implementacja. PROJEKT most pomiędzy specyfikowaniem a kodowaniem

PROJEKTOWANIE. kodowanie implementacja. PROJEKT most pomiędzy specyfikowaniem a kodowaniem PROJEKTOWANIE określenie wymagań specyfikowanie projektowanie kodowanie implementacja testowanie produkt konserwacja Faza strategiczna Analiza Dokumentacja Instalacja PROJEKT most pomiędzy specyfikowaniem

Bardziej szczegółowo

TECHNOLOGIE OBIEKTOWE. Wykład 3

TECHNOLOGIE OBIEKTOWE. Wykład 3 TECHNOLOGIE OBIEKTOWE Wykład 3 2 Diagramy stanów 3 Diagram stanu opisuje zmiany stanu obiektu, podsystemu lub systemu pod wpływem działania operacji. Jest on szczególnie przydatny, gdy zachowanie obiektu

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

Bardziej szczegółowo

Testowanie oprogramowania

Testowanie oprogramowania Testowanie oprogramowania 1/17 Testowanie oprogramowania Wykład 01 dr inż. Grzegorz Michalski 13 października 2015 Testowanie oprogramowania 2/17 Dane kontaktowe: Kontakt dr inż. Grzegorz Michalski pokój

Bardziej szczegółowo

Dziedziczenie jednobazowe, poliformizm

Dziedziczenie jednobazowe, poliformizm Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie jednobazowe 2. Polimorfizm część pierwsza 3. Polimorfizm część druga Zofia Kruczkiewicz, ETE8305_6 1 Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 12 Marcin Młotkowski 16 maja 2018 Plan wykładu 1 Analiza obiektowa Dziedziczenie Dziedziczenie a składanie 2 Marcin Młotkowski 482 / 537 Dziedziczenie Dziedziczenie a składanie Plan wykładu 1 Analiza

Bardziej szczegółowo

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski Adapter: opis Wzorce Strukturalne Tomasz Borzyszkowski Alternatywna nazwa: Wrapper (opakowanie) Rola obiektu Adapter: pełni wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół

Bardziej szczegółowo

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 1) Oprogramowanie to: 2) Produkty oprogramowania w inżynierii oprogramowania można podzielić na: 3) W procesie wytwarzania oprogramowania

Bardziej szczegółowo

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego: Typy klasowe (klasy) 1. Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która definiuje programy za pomocą obiektów

Bardziej szczegółowo

Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014

Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Modelowanie diagramów klas w języku UML Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Czym jest UML - Unified Modeling Language - Rodzina języków modelowania graficznego - Powstanie na przełomie lat 80

Bardziej szczegółowo

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1 Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1 Zofia Kruczkiewicz 1 Zunifikowany iteracyjno- przyrostowy proces tworzenia oprogramowania kiedy? Przepływ działań Modelowanie przedsiębiorstwa

Bardziej szczegółowo

INŻYNIERIA OROGRAMOWANIA TESTOWANIE JEDNOSTKOWE 2015/2016

INŻYNIERIA OROGRAMOWANIA TESTOWANIE JEDNOSTKOWE 2015/2016 INŻYNIERIA OROGRAMOWANIA TESTOWANIE JEDNOSTKOWE 2015/2016 Czemu testowanie jest ważne? 1994 gra Król Lew Błąd Excela 2007 (ile to jest 850*77,1?) 1987 Therac-25 (race condition, dokumentacja) i Cobalt60

Bardziej szczegółowo

Dziedziczenie. dr Jarosław Skaruz

Dziedziczenie. dr Jarosław Skaruz Dziedziczenie dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com Dziedziczenie specjalizacja Dziedziczenie generalizacja Generalizacja-specjalizacja jest takim związkiem pomiędzy klasami,

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 3.

Programowanie 2. Język C++. Wykład 3. 3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane

Bardziej szczegółowo

Podstawy Programowania Programowanie Obiektowe

Podstawy Programowania Programowanie Obiektowe Podstawy Programowania Programowanie Obiektowe Michał Bujacz bujaczm@p.lodz.pl B9 Lodex 207 godziny przyjęć: środy i czwartki 10:00-11:00 http://www.eletel.p.lodz.pl/bujacz/ 1 Pytania powtarzające x &

Bardziej szczegółowo

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE. C++ - DZIEDZICZENIE Do najważniejszych cech języka C++ należy możliwość wielokrotnego wykorzystywania kodu Prymitywnym, ale skutecznym sposobem jest kompozycja: deklarowanie obiektów wewnątrz innych klas,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie teoretyczne. Rozważana

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Wzorce projektowe i refaktoryzacja

Wzorce projektowe i refaktoryzacja Wzorce projektowe i refaktoryzacja Paweł Kozioł p.koziol@students.mimuw.edu.pl 18.01.2005 Moja praca magisterska Narzędzie dla środowiska Eclipse wspierające stosowanie wzorców projektowych J2EE Prowadzący:

Bardziej szczegółowo

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? 1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie

Bardziej szczegółowo

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania 2/32 Cel analizy Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie:

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki zaprojektowany jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych jest to język pozwalający na programowanie zarówno proceduralne

Bardziej szczegółowo

Programowanie obiektowe. Wprowadzenie

Programowanie obiektowe. Wprowadzenie 1 Programowanie obiektowe Wprowadzenie 2 Programowanie obiektowe Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Informatyka I Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Dziedziczenie klas

Bardziej szczegółowo

Podstawy modelowania programów Kod przedmiotu

Podstawy modelowania programów Kod przedmiotu Podstawy modelowania programów - opis przedmiotu Informacje ogólne Nazwa przedmiotu Podstawy modelowania programów Kod przedmiotu 11.3-WI-INFP-PMP Wydział Kierunek Wydział Informatyki, Elektrotechniki

Bardziej szczegółowo

UML w Visual Studio. Michał Ciećwierz

UML w Visual Studio. Michał Ciećwierz UML w Visual Studio Michał Ciećwierz UNIFIED MODELING LANGUAGE (Zunifikowany język modelowania) Pozwala tworzyć wiele systemów (np. informatycznych) Pozwala obrazować, specyfikować, tworzyć i dokumentować

Bardziej szczegółowo

Możliwe strategie tworzenia niezawodnego oprogramowania:

Możliwe strategie tworzenia niezawodnego oprogramowania: ZWIĘKSZANIE POPRAWNOŚCI OPROGRAMOWANIA Plan prezentacji: Poprawność oprogramowania Poprawność oprogramowania Weryfikacja i testowanie. Rodzaje testów. Testowania względem specyfikacji Testowanie względem

Bardziej szczegółowo

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to

Bardziej szczegółowo

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE SYSTEMOWE

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE SYSTEMOWE INŻYNIERIA OPROGRAMOWANIA TESTOWANIE SYSTEMOWE Ważne pojęcia (I) Warunek testowy (test condition) to element lub zdarzenie modułu lub systemu, który może być zweryfikowany przez jeden lub więcej przypadków

Bardziej szczegółowo

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej. Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.

Bardziej szczegółowo

Metody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/

Bardziej szczegółowo

Technologie i usługi internetowe cz. 2

Technologie i usługi internetowe cz. 2 Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,

Bardziej szczegółowo

Historia modeli programowania

Historia modeli programowania Języki Programowania na Platformie.NET http://kaims.eti.pg.edu.pl/ goluch/ goluch@eti.pg.edu.pl Maszyny z wbudowanym oprogramowaniem Maszyny z wbudowanym oprogramowaniem automatyczne rozwiązywanie problemu

Bardziej szczegółowo

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 1 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne

Bardziej szczegółowo

Jarosław Kuchta Jakość Systemów Informatycznych Jakość Oprogramowania. Pomiary w inżynierii oprogramowania

Jarosław Kuchta Jakość Systemów Informatycznych Jakość Oprogramowania. Pomiary w inżynierii oprogramowania Jarosław Kuchta Jakość Systemów Informatycznych Jakość Oprogramowania Pomiary w inżynierii oprogramowania Cel pomiarów ocena jakości produktu ocena procesów (produktywności ludzi) stworzenie podstawy dla

Bardziej szczegółowo

KARTA KURSU. Programowanie obiektowe

KARTA KURSU. Programowanie obiektowe KARTA KURSU Nazwa Nazwa w j. ang. Programowanie obiektowe Object oriented programming Kod Punktacja ECTS* Stacjonarne 6 Niestacjonarne 4 Koordynator dr Dariusz Pałka Zespół dydaktyczny: dr Dariusz Pałka

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

.NET Klasy, obiekty. ciąg dalszy

.NET Klasy, obiekty. ciąg dalszy .NET Klasy, obiekty ciąg dalszy Przeciążanie operatorów 1 W języku C# istnieje możliwość zdefiniowania funkcjonalności dużej części operatorów dla typów stworzonych przez użytkownika. Dzięki takiemu zabiegowi,

Bardziej szczegółowo

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe. dr inż. Marcin Pietroo Wzorce projektowe dr inż. Marcin Pietroo Adapter - strukturalny wzorzec projektowy, którego celem jest umożliwienie współpracy dwóm klasom o niekompatybilnych interfejsach - adapter przekształca interfejs

Bardziej szczegółowo

Programowanie obiektowe 2 - opis przedmiotu

Programowanie obiektowe 2 - opis przedmiotu Programowanie obiektowe 2 - opis przedmiotu Informacje ogólne Nazwa przedmiotu Programowanie obiektowe 2 Kod przedmiotu 11.3-WK-MATP-PO2-L-S14_pNadGenDGV9E Wydział Kierunek Wydział Matematyki, Informatyki

Bardziej szczegółowo

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++ Jednostka prowadząca: Wydział Techniczny Kierunek studiów: Elektronika i telekomunikacja Nazwa przedmiotu: Język programowania C++ Charakter przedmiotu: podstawowy, obowiązkowy Typ studiów: inŝynierskie

Bardziej szczegółowo

Paradygmaty programowania

Paradygmaty programowania Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów

Bardziej szczegółowo

problem w określonym kontekście siły istotę jego rozwiązania

problem w określonym kontekście siły istotę jego rozwiązania Wzorzec projektowy Christopher Alexander: Wzorzec to sprawdzona koncepcja, która opisuje problem powtarzający się wielokrotnie w określonym kontekście, działające na niego siły, oraz podaje istotę jego

Bardziej szczegółowo

Testy poziom po poziomie

Testy poziom po poziomie poziom po poziomie Prowadzący: Tomasz Mielnik Eliza Słonińska Agenda 1. Modele prowadzenia projektów 2. V-Model 3. Poziomy testów 4. Typy testów 5. Zadanie 1 Modele prowadzenia projektów Wodospadowy (ang.

Bardziej szczegółowo

Zawód tester, czyli na czym polega testowanie. Katarzyna Łabinska Justyna Sacha - Gawlik

Zawód tester, czyli na czym polega testowanie. Katarzyna Łabinska Justyna Sacha - Gawlik Zawód tester, czyli na czym polega testowanie Katarzyna Łabinska Justyna Sacha - Gawlik Agenda: 1. Poznajmy się 2. Tester - kto to jest? 3. Podstawy testowania 4. Testowanie manualne a automatyczne 5.

Bardziej szczegółowo

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE INTEGRACYJNE

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE INTEGRACYJNE INŻYNIERIA OPROGRAMOWANIA TESTOWANIE INTEGRACYJNE Definicja ITQB Testowanie integracyjne (integration testing) wykonywane w celu wykrycia defektów w interfejsach i interakcjach pomiędzy modułami lub systemami

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Multi-wyszukiwarki. Mediacyjne Systemy Zapytań wprowadzenie. Architektury i technologie integracji danych Systemy Mediacyjne

Multi-wyszukiwarki. Mediacyjne Systemy Zapytań wprowadzenie. Architektury i technologie integracji danych Systemy Mediacyjne Architektury i technologie integracji danych Systemy Mediacyjne Multi-wyszukiwarki Wprowadzenie do Mediacyjnych Systemów Zapytań (MQS) Architektura MQS Cechy funkcjonalne MQS Cechy implementacyjne MQS

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Metody statyczne i klasowe Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) PO w. VI Jesień 2013 1 / 23 W poprzednich odcinkach... Klasy kategorie obiektów Przynależność

Bardziej szczegółowo

Testowanie według modelu (MBT) Stowarzyszenie Inżynierii Wymagań wymagania.org.pl

Testowanie według modelu (MBT) Stowarzyszenie Inżynierii Wymagań wymagania.org.pl Testowanie według modelu (MBT) Bogdan Bereza, Victo MBT testowanie z modelu wersja 2.1 A 1 (48) Pozdrawiam Best regards Med vänliga hälsningar Bogdan Bereza bogdan.bereza@victo.eu +48 519 152 106 Skype:

Bardziej szczegółowo

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów.

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów. Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów. Paweł Świątek Agenda 1. Sprawy organizacyjne 2. Zasady zaliczenia 3. Cele kursu 4.

Bardziej szczegółowo

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium: Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.

Bardziej szczegółowo