Technologia programowania
|
|
- Mikołaj Zakrzewski
- 5 lat temu
- Przeglądów:
Transkrypt
1 Testowanie/GRASP 23 października 2018
2 Testy jednostkowe Testy jednostkowe (unit tests) Test jednostkowy to kod, który ma na celu zapewnić, że inny kod działa poprawnie. Główna idea: najpierw test, potem implementacja, czyli: trochę testowania, trochę implementacji. Stosowane sa podczas tworzenia zgodnie z metodyka Test-driven development. Korzyści: błędy znajdowane sa wcześniej, mniej debuggowania, kod jest bardziej stabilny i czytelny.
3 Testy jednostkowe >>
4 Testy jednostkowe Kiedy pisać? W najbardziej skomplikowanych i krytycznych częściach kodu. Nie ma sensu tworzyć testów dla trywialnego kodu. Dobry zestaw testów zapobiega błędom podczas tworzenia nowych funkcjonalności. Gdy kod nie ma pokrycia testami, warto zaczać od takiego kodu, w którym jest duże prawdopodobieństwo wystapienia błędów. Przykład Largest method
5 Główne klasy Klasy pakietu junit.framework 1 Assert - zawiera metody asercji. 2 TestCase- definiuje elementy do wywoływnia wielu testów (metody: setup, teardown). 3 TestResult - przechowuje rezultaty wykonywania testów. 4 TestSuite - wywołuje wiele
6 Klasa Assert Podstawowe metody 1 // Check that two objects are equal 2 assertequals ( str1, str2 ); 3 // Check that a condition is true 4 asserttrue ( val1 < val2 ); 5 // Check that a condition is false 6 assertfalse ( val1 > val2 ); 7 // Check that an object isn 't null 8 assertnotnull ( str1 ); 9 // Check that an object is null 10 assertnull ( str3 ); 11 // Check if two references point to the same object 12 assertsame ( str4, str5 ); 13 // Check if two references not point to the same object 14 assertnotsame ( str1, str3 ); 15 // Check whether two arrays are equal to each other. 16 assertarrayequals ( expectedarray, resultarray ); Przykład UnitTesting->TestAssertion
7 Klasa TestCase Podstawowe metody 1 public class JUnitTestCase extends TestCase { 2 3 public void setup () { 4 } 5 7 public void testadd () { 8 } 9 10 public void teardown ( ) { 11 } 12 } Przykład UnitTesting->JUnitTestCase
8 Klasa TestResult Podstawowe metody 1 Result result = JUnitCore. runclasses ( JUnit. class ); 2 for ( Failure failure : result. getfailures ()) { 3 System. out. println ( failure. tostring ()); 4 } 5 System. out. println ( result. wassuccessful ()); Przykład UnitTesting->TestRunner
9 JUnit Annotations Podstawowe adnotacje 1 public class JUnitAnnotation { 2 4 public static void beforeclass () { 5 } 7 public static void afterclass () { 8 } 10 public void before () { 11 } 13 public void after () { 14 } 16 public void test () { 17 } 19 public void ignoretest () { 20 } 21 }
10 JUnit Annotations Przykład UnitTesting->JUnitAnnotation UnitTesting->JUnitAnnotationExample UnitTesting->JUnitException
11 Klasa TestSuite Podstawowe metody ( Suite. class ) SuiteClasses ({ 3 TestAssertions. class, 4 JunitAnnotation. class, 5 TestJunit. class 6 }) 7 8 public class TestSuite { 9 } Przykład UnitTesting->TestSuite
12 Obiekty imitacji Obiekty imitacji (Moking objects) Mocking to technika testowania charakteryzujaca sie tym, że rzeczywiste obiekty zastapione sa ich imitacja z predefiniowanym zachowaniem. Obiekt imitacyjny to obiekt, który dla określonego wejścia ma zdefiniowane określone wyjście bez podejmowania określonych akcji. Przykład JUnitMockCalculation JUnitWithMockito
13 Obiekty imitacji Kiedy stosować? Do testowania komponentów, które zależa od komponentów jeszcze nie zaimplementowanych. Gdy rzeczywiste komponenty działaja zbyt powoli. Gdy infrastuktura (a raczej jej brak) uniemożliwia rzeczywiste testowanie. Mockito-tutorial
14 Zasady GRASP Expert Creator Low Coupling High Cohesion Polymorphism Indirection Pure Fabrication Protected Variations Controller
15 Expert >> Product Description -zna cenę produktu za sztukę SalesLineItem-zna liczbę sztuk danego produku Sale - zna zakupione produkty Która klasa powinna wyliczać całkowita kwotę sprzedaży?
16 Expert - czyli ten, który wie, co robi Przydziel zobowiazanie ekspertowi: klasie, która ma informacje konieczne do jego realizacji. Gdy informacja jest rozproszona po różnych klasach konieczna może być współpraca ekspertów. Zysk: wspiera hermetyzację i równomierny podział odpowiedzialności, lżejsze i czytelniejsze klasy.
17 Expert - rozwi zanie >>
18 Creator >> Kto powinien być odpowiedzialny za utworznie nowej instancji klasy SalesLineItem?
19 Creator Nowa instancję A powinna tworzyć klasa B, która: Posiada, pamięta lub bezpośrednio używa A Posiada dane inicjalizujace dla A Gdy wiele klas spełnia warunki, wybierz B zawierajace A Zysk: mniejsza liczba powiazań, kod łatwy w utrzymaniu.
20 Creator - rozwi zanie >>
21 Sprz»enie (ang. Coupling) Zależności między klasami: atrybuty, argumenty metod, wywołania metod, dziedziczenie... Sprzężenie - miara określajaca w jakim stopniu dana klasa jest zależna od innych klas Problemy z wysokim sprzężeniem klasy A: zmiany w innych klasach wymuszaja zmiany w A trudno jest zrozumieć klasę A w izolacji trudno jest powtórnie użyć klasę A, bo potrzebne sa też obiekty z nia powiazane.
22 Niskie sprz»enie (Low Coupling) Jak lepiej powiazać instancje klas Payment i Sales? >>
23 Niskie sprz»enie (Low Coupling) >>
24 Niskie sprz»enie - zasady Oceniajac różne możliwości przydzielaj metody tak, aby ograniczać sprzężenie między klasami. Zysk: łatwiejsze ponowne wykorzystanie kodu, ograniczenie zasięgu zmian. Pewnien stopień powiazania jest nieunikniony, bo obiekty musza się komunikować.
25 Spójno± (ang. Cohesion) Spójność - miara określajaca w jakim stopniu metody klasy sa do siebie podobne i ze soba powiazane (tzn. podobna funkcjonalność i stopień ogólności) Niska spójność powoduje, że: trudno zrozumieć kod i cel istnienia klasy trudno jest klasę utrzymywać, rozwijać i ponownie wykorzystywać.
26 Jak oceni spójno±? Bardzo niska spójność - bardzo dużo zadań w różnych obszarach funkcjonalnych (np. klasa odpowiada za logikę i za interakcję z baza danych) Niska spójność - wiele bardzo różnych zadań w jednym obszarze funkcjonalnym (np. jedna klasa w pełni odpowiada za interakcję z baza danych) Wysoka spójność - mała liczba podobnych zobowiazań w ustalonym obszarze funkcjonalnym (np. grupa klas realizuje obsługę bazy danych)
27 Spójno± >>
28 High Cohesion - zasada ewaluacyjna Oceniajac różne możliwości przydzielaj metody tak, aby spójność pozostała wysoka Zysk: łatwy w utrzymaniu kod High Cohesion = Low Coupling
29 Pure Fabrication - czysty wymysª Problem: ograniczenie się w modelu projektowym do obiektów z modelu dziedziny może prowadzić do niskiej spójności i wysokiego sprzężenia. Pomysł: wymyśl klasę pomocnicza spoza modelu dziedziny i przydziel jej odpowienie zobowiazania. Przykład: gdy każda klasa odpowiada za swój zapis do bazy danych to występuje wysokie sprzężenie i niska spójność. Stwórzmy więc specjalne klasy do obsługi bazy danych.
30 Indirection - czyli po±rednictwo Unikaj bezpośrednich powiazań do elementów niestabilnych. W razie potrzeby wykorzystaj obiekt pośredniczacy. >>
31 Polymorphism Polimorfizm - oznacza nadanie tej samej nazwy metodom różnych klas, gdy metody sa ze soba powiazane. overriding - klasy maja wspólny interfejs lub nadklasę, ale maja taka sama sygnaturę. overloading - metody maja taka sama nazwę, ale w zależności od sygnatury moga mieć inny kod.
32 Polimorfizm - przykªad >> Sale będzie musiała wyliczyć podatek przy użyciu zewnętrznego kalkulatora podatków Kalkulatorów jest dużo - maja różne interfejsy Jaki obiekt powinien odpowiadać za ich obsługę?
33 Polimorfizm - przykªad >> Zobowiazanie ma postać polimorficznej metody gettaxes Zasada ogólna: użyj polimorfizmu jeśli metoda zależy od typu (zamiast if-then-else)
34 Protected Variations Jak projektować system by był odporny na zmiany i łatwo rozszerzalny? Zasada ogólna: rozpoznawaj miejsca, w których zmiany moga się pojawić i otaczaj je stabilnym interfejsem. Przykład: kalkulator podatków jest punktem zmienności (prawo się zmienia, wielu usługodawców, różne API)
35 Protected Variations Open/close principle - klasy powinny być otwarte na rozszerzenia i zamknięte na modyfikacje. Law of Demeter czyli: nie rozmawiaj z obcymi. Programowanie refleksyjne
36 Protected Variations - przykład Kiepsko - co jeśli trzeba dodać kolejny kształt? 1 public class Rectangle { 2 public double Length ; 3 public double Width ; 4 } 5 public class Circle { 6 public double Radius ; 7 } 8 public double Area ( object [] shapes ) 9 { 10 double area = 0; 11 for ( Object shape in shapes ) 12 { 13 if ( shape instanceof Rectangle ) 14 { 15 Rectangle rectangle = ( Rectangle ) shape ; 16 area += rectangle. Width * rectangle. Height ; 17 } 18 else 19 { 20 Circle circle = ( Circle ) shape ; 21 area += circle. Radius * circle. Radius * Math. PI ; 22 } 23 } 24 return area ; 25 }
37 Protected Variations - przykład Lepiej - Klas nie trzeba modyfikować, ale można dodać inne 1 public class Rectangle { 2 public double Length ; 3 public double Width ; 4 public double Area () 5 { 6 return Width * Height ; 7 } 8 } 9 10 public class Circle { 11 public double Radius ; 12 public double Area () 13 { 14 return Radius * Radius * Math. PI ; 15 } 16 } public double Area ( Shape [] shapes ) 19 { 20 double area = 0; 21 for ( Shape shapeinstance in shapes ) 22 { 23 area += shapeinstance. Area (); 24 } 25 return area ; 26 }
38 Law of Demeter Klasa może wysłać komunikat do: Obiektu this metody parametru obiektu utworzonego wewnatrz metody Źle 1 AccountHolder holder = 2 sale. getpayment (). getaccount (). getaccountholder (); Dobrze 1 AccountHolder holder = 2 sale. getaccountholderofpayment ();
39 Programowanie refleksyjne Wybór i wiazanie obiektów w czasie wykonywania progamu Bez refleksji 1 Foo foo = new Foo (); 2 foo. hello (); Z użyciem refleksji 1 Class c = Class. forname (" Foo " ); 2 Method m = c. getmethod (" hello " ); 3 m. invoke (c. newinstance ());
40 SOLID Single Responsibility Open - close principle Liskov substitution Interface segregation Dependancy inversion
41 Dependancy inversion - klasyczna architektura warstwowa Uzależniać klasy od abstrakcji a nie od konkretnych klas. Warstwa to grupa pakietów o podobnym zakresie odpowiedzialności. Warstwy układaja się tak, aby wyższe wywoływały usługi niższych, a niższe nie zależały od wyższych. >>
42 Dependancy inversion - odwrócenie klasycznych zale»no±ci Wyższe warstwy zależa od interfejsów a nie od wartw niższych. >>
43 Inne wa»ne zasady KISS - Keep it Simple, Stupid YAGNI - You Ain t Gonna Need it DRY - Don t Repeat Yourself.
Projektowanie obiektowe oprogramowania Wykład 4 - SOLID GRASP Wiktor Zychla 2012
Projektowanie obiektowe oprogramowania Wykład 4 - SOLID GRASP Wiktor Zychla 2012 1 Taksonomia RDD RDD = Responsibility-Driven Development, przemyślane projektowanie obiektowe Wzorce aplikacyjne Wzorce
Bardziej szczegółowoWykład 4. Projektowanie. MIS n Inżynieria oprogramowania Październik 2014
Wykład 4 MIS-1-505-n Inżynieria oprogramowania Październik 2014 Metody Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie 4.1 Agenda 1 2 3 Metody Metody 4 5 4.2 Implementacja Metody
Bardziej szczegółowoMETODY PROGRAMOWANIA
METODY PROGRAMOWANIA Testy jednostkowe 8 grudnia 2017 Krzysztof Pawłowski kpawlowski@pjwstk.edu.pl PO CO NAM TESTY? weryfikacja poprawności sprawdzanie regresji specyfikacja dokumentacja wymuszanie dobrego
Bardziej szczegółowoProgramowanie poprzez testy z wykorzystaniem JUnit
Programowanie poprzez testy z wykorzystaniem JUnit Programowanie ekstremalne (XP) XP zaproponowano w 1999 (K. Beck: Extreme Programming Explained ) XP dedykowane jest do projektów: O małym lub średnim
Bardziej szczegółowoTestowanie jednostkowe. Jacek Starzyński, ZETiIS PW
Testowanie jednostkowe Jacek Starzyński, ZETiIS PW Testowanie Po co testować? Co testować? Kiedy testować? Jak testować? Narzędzia Po co testować? Testy nie udowadniają poprawności......ale pozwalają wykryć
Bardziej szczegółowoProgramowanie zespołowe
Programowanie zespołowe Laboratorium 3 - podstawy testów jednostkowych mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 7 marca 2017 1 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe
Bardziej szczegółowoLABARATORIUM 9 TESTY JEDNOSTKOWE JUNIT 3.8
Inżynieria Oprogramowania 2013/14 LABARATORIUM 9 TESTY JEDNOSTKOWE JUNIT 3.8 Hierarchia klas: TestCase klasa testująca, będąca klasą bazową dla wszystkich przypadków testowych. Zawiera przypadki testowe
Bardziej szczegółowoMetodyki zwinne wytwarzania oprogramowania
Metodyki zwinne wytwarzania oprogramowania Wykład 7 Marcin Młotkowski 23 listopada 2016 Plan wykładu 1 2 3 Kilka negatywnych przykładów Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 2 /
Bardziej szczegółowoWprowadzenie do testów jednostkowych. Marcin Dziedzic, Wiktor Żołnowski
Wprowadzenie do testów jednostkowych Marcin Dziedzic, Wiktor Żołnowski Część I: Koncepcja testów jednostkowych Co to jest test jednostkowy wg Wiki? Test jednostkowy (ang. unit test) to w programowaniu
Bardziej szczegółowoJAVA 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ółowoProjektowanie obiektowe oprogramowania Wykład 3 - SOLID GRASP Wiktor Zychla 2016
Projektowanie obiektowe oprogramowania Wykład 3 - SOLID GRASP Wiktor Zychla 2016 1 Taksonomia RDD Projektowanie obiektowe = określanie odpowiedzialności obiektów (klas) i ich relacji względem siebie. Wszystkie
Bardziej szczegółowoWykład 5. Inżynieria oprogramowania MIS s MIO s MIS n Listopad 2014
Wykład 5 Inżynieria oprogramowania MIS-1-502-s MIO-1-505-s MIS-1-505-n Listopad 2014 Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie 5.1 Agenda 1 2 3 5.2 Co to jest G.R.A.S.P.?
Bardziej szczegółowoTestowanie. Ryszard Beczek & Piotr Miłkowski 1 04/11/07
Testowanie Ryszard Beczek & Piotr Miłkowski 1 O czym to będzie? Trzy słowa o testowaniu TDD JUnit TestNG JMeter Yawet Squish/Java 2 Jak testujemy? Zwykle aplikacje testujemy ręcznie Testy przeprowadzamy
Bardziej szczegółowoJUnit TESTY JEDNOSTKOWE. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska
JUnit TESTY JEDNOSTKOWE Waldemar Korłub Platformy Technologiczne KASK ETI Politechnika Gdańska Testy aplikacji 2 Ręczne testowanie Czasochłonne Powtarzalność trudna do uzyskania Nudne Testowanie automatyczne
Bardziej szczegółowoZasady projektowania obiektowego
Zasady projektowania obiektowego Nie każdy, kto ma młotek, może nazywać się architektem. wzorce projektowe UML SOLID Robert C. Martin Strategia w metodyce Agile GRASP Responsibility Driven-Design 2 S
Bardziej szczegółowoTesty jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz
Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 http://www.junit.org/ Zofia Kruczkiewicz 1. Aby utworzyć test dla jednej klasy, należy kliknąć prawym przyciskiem myszy w oknie Projects na wybraną
Bardziej szczegółowoTechnologia Programowania 2016/2017 Wykład 5
Technologia Programowania 2016/2017 Wykład 5 Wzorce GoF Jakub Lemiesz Wzorce GoF Kreacyjne Builder Singleton Simple Factory Factory Method Abstract Factory Prototype Strukturalne Adapter Decorator Proxy
Bardziej szczegółowoProjektowanie obiektowe oprogramowania Wykład 3 - SOLID GRASP Wiktor Zychla 2017
Projektowanie obiektowe oprogramowania Wykład 3 - SOLID GRASP Wiktor Zychla 2017 1 Taksonomia Responsibility -Driven Development Projektowanie obiektowe = określanie odpowiedzialności obiektów (klas) i
Bardziej szczegółowoPolimorfizm. dr Jarosław Skaruz
Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody
Bardziej szczegółowoWSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy
WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy Pojęcie klasy Program napisany w języku Java składa się ze zbioru klas. Każda klasa zawiera
Bardziej szczegółowoTestowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia
Program szkolenia: Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Testowanie aplikacji mobilnych na
Bardziej szczegółowoTESTOWANIE OPROGRAMOWANIA
TESTOWANIE OPROGRAMOWANIA Uważaj na ten program ja tylko udowodniłem jego poprawność, nie testowałem go Donald Knuth Plan prezentacji 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem
Bardziej szczegółowoProgramowanie Zespołowe
Programowanie Zespołowe Dobre Praktyki dr Rafał Skinderowicz mgr inż. Michał Maliszewski Parafrazując klasyka: Jeśli piszesz w Javie pisz w Javie - Rafał Ciepiela Principal Software Developer Cadence Design
Bardziej szczegółowoProjektowanie obiektowe oprogramowania Wykład 3 - SOLID GRASP Wiktor Zychla 2018
Projektowanie obiektowe oprogramowania Wykład 3 - SOLID GRASP Wiktor Zychla 2018 1 Taksonomia Responsibility-Driven Development Projektowanie obiektowe = określanie odpowiedzialności obiektów (klas) i
Bardziej szczegółowoKurs 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ółowoPlatformy Technologiczne
i Platformy Technologiczne Laboratorium nr 5 Java: testy jednostkowe z biblioteką JUnit Projekt opracowany w ramach laboratorium nr 5 będzie wykorzystywany w czasie laboratorium nr 6 należy zachować przygotowaną
Bardziej szczegółowoProgramowanie 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ółowoProjektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017
Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017 1 Wzorce podstawowe 1.1 Interface vs Abstract class class InterfaceAbstractClass
Bardziej szczegółowoMetodyki zwinne wytwarzania oprogramowania
Metodyki zwinne wytwarzania oprogramowania Wykład 7 Marcin Młotkowski 25 listopada 2014 Plan wykładu 1 Zasada pojedynczej odpowiedzialności 2 Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania
Bardziej szczegółowoTestowanie II. Cel zajęć. Pokrycie kodu
Cel zajęć Celem zajęć jest zapoznanie studentów z uzupełniającymi zagadnieniami dotyczącymi testowania wytwarzanego oprogramowania. W pierwszej części zajęć przedstawiona zostanie metoda oceny kompletności
Bardziej szczegółowoSOLIDnie śmierdzący kod. http://www.benedykt.net
SOLIDnie śmierdzący kod http://www.benedykt.net abenedykt produktywność skuteczność pracy w czasie 120% 100% 80% 60% 40% 20% 0% ile kosztuje pracownik 5 programistów x 2000PLN BRUTTO x 24 miesiące = 240
Bardziej szczegółowoDokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Bardziej szczegółowoWskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński
Wskazówki projektowe Programowanie Obiektowe Mateusz Cicheński Przydatne zasady SOLID Wzorce struktury aplikacji MVC MVP MVVM Metody wytwarzania oprogramowania Manifest Zwinnego Wytwarzania Oprogramowania
Bardziej szczegółowoAutomatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36
Automatyzacja testowania oprogramowania Automatyzacja testowania oprogramowania 1/36 Automatyzacja testowania oprogramowania 2/36 Potrzeba szybkich rozwiązań Testowanie oprogramowania powinno być: efektywne
Bardziej szczegółowoKurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016
Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac
Bardziej szczegółowoTechnologie 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ółowoKurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Bardziej szczegółowoNAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD
NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD OPIS Praca programisty oprócz umiejętności i wiedzy technicznej, wymaga również doskonałej pracy z kodem. Umiejętności te
Bardziej szczegółowoTestowanie aplikacji Java Servlets
Borland Developer Days 2004 2-3 czerwca 2004 Testowanie aplikacji Java Servlets Bartosz Walter mailto: Bartek.Walter@man.poznan.pl Agenda Aplikacje Java Servlets TM Jak testować aplikacje internetowe?
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Bardziej szczegółowoTestowanie i logowanie. 1. Testowanie aplikacji JUnit. 2. Tworzenie logów: pakiet java.util.logging.
1 Testowanie i logowanie 1. Testowanie aplikacji JUnit. 2. Tworzenie logów: pakiet java.util.logging. 2 JUnit JUnit jest platformą umożliwiającą tworzenie testów i testowanie programów napisanych w Javie.
Bardziej szczegółowoKurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019
Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości
Bardziej szczegółowoTechnologia Programowania 2016/2017 Wykład 4
Technologia Programowania 2016/2017 Wykład 4 Wzorce projektowe GoF Jakub Lemiesz Wzorce GRASP a wzorce GoF Znamy 9 wzorców GRASP ogólne zasady Na GRASP opierają się klasyczne wzorce GoF Na wzorcach GoF
Bardziej szczegółowoWYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java
WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH Mirosław Gołda, Programista Java Agenda Kilka słów o języku Groovy Wpięcie Grooviego w projekt Springowy Testy jednostkowe
Bardziej szczegółowoTestowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).
Testowanie II Cel zajęć Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage). Pokrycie kodu testami Jak już była mowa na poprzednich
Bardziej szczegółowoDariusz 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ółowoModelowanie 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ółowoProgramowanie zorientowane obiektowo. Mateusz Kołecki
Programowanie zorientowane obiektowo Mateusz Kołecki Plan MVC Wstęp Separacja odpowiedzialnośći Antyprzykład Dobry przykład Wady/zalety MVC MVC to tylko początek - wzorce projektowe Dlaczego chcemy używać
Bardziej szczegółowoIteracyjno-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ółowoPolimorfizm, 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ółowoPodstawy 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ółowoKlasy 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ółowoProgramowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera
Bardziej szczegółowoMETODY PROGRAMOWANIA
METODY PROGRAMOWANIA Wzorzec Repository 21 października 2017 Krzysztof Pawłowski kpawlowski@pjwstk.edu.pl Każdy wzorzec opisuje problem, który ciągle pojawia się w naszej dziedzinie, a następnie określa
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje
Bardziej szczegółowoProgram szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne
Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne Informacje ogólne Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Wzorce projektowe i ich implementacja
Bardziej szczegółowoDziedziczenie. 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ółowoSingleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.
1/8 Singleton Cel: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. Przykład: Niekiedy ważne jest, aby tworzyć tylko jedną instancję jakiejś klasy. Globalne zmienne
Bardziej szczegółowo1. Robert C. Martin: Clean Code: A Handbook of Agile Software Craftsmanship (Czysty Kod: Podręcznik Dobrego Programisty)
Jakoś(ć) kodu Polecana literatura 1. Robert C. Martin: Clean Code: A Handbook of Agile Software Craftsmanship (Czysty Kod: Podręcznik Dobrego Programisty) 2. Peter Kim: Podręcznik pentestera. Bezpieczeństwo
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 10 - klasy abstrakcyjne i interfejsy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 17 maja 2017 1 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Bardziej szczegółowoWprowadzenie do zasad SOLID - czyli jak pisać SOLIDny kod
Wprowadzenie do zasad SOLID - czyli jak pisać SOLIDny kod MICHAŁ BRZOZOWSKI Architekt i Kierownik Zespołu Jak poznad zły kod? Znamiona złej architektury Sztywnośd (Rigidity) Tendencja do tego że system
Bardziej szczegółowoCałościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)
Program szkolenia: Całościowe podejście do testowania automatycznego dla programistów Ruby (TDD, BDD, Spec. by Example, wzorce, narzędzia) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania:
Bardziej szczegółowoTesty automatyczne. Korzystające z junit
Testy automatyczne Korzystające z junit Cytaty Kiedy zawiesza się program konkurencji, to jest awaria. Kiedy zawiesza się własny program, to jest drobiazg. Często po awarii pojawia się komunikat typu ID
Bardziej szczegółowoWeryfikacja i walidacja. Metody testowania systemów informatycznych
Weryfikacja i walidacja Metody testowania systemów informatycznych Zagadnienia Weryfikacja a walidacja Etapy procesu testowania Rola planowania w procesie testowania systemów Przegląd różnych strategii
Bardziej szczegółowoWzorce 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ółowoPodstawy i języki programowania
Podstawy i języki programowania Laboratorium 7 - wprowadzenie do metod mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 27 listopada 2017 1 / 15 mgr inż. Krzysztof Szwarc Podstawy i języki
Bardziej szczegółowoPaweł Rajba
Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Architektura Architectural styles Patterns of Enterprise Application Architecture Design Principles SOLID Bass, Clements i Kazman, 2003: Architektura
Bardziej szczegółowoProjektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015
Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015 1 Wzorce podstawowe 1.1 Interface vs Abstract class class InterfaceAbstractClass
Bardziej szczegółowoDziedziczenie. » Dodawanie nowych elementów klasy (składowych funkcyjnych, danych składowych)» Modyfikacje odziedziczonych składowych funkcyjnych
Dziedziczenie Dziedziczenie umożliwia definiowanie nowej klasy przez rozbudowanie już istniejącej. Klasa wprowadzana całkowicie dziedziczy elementy starej klasy.» Dodawanie nowych elementów klasy (składowych
Bardziej szczegółowoMetody Metody, parametry, zwracanie wartości
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca
Bardziej szczegółowoInterfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej
Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,
Bardziej szczegółowoKurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017
Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania
Bardziej szczegółowoPHP 5 język obiektowy
PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje
Bardziej szczegółowo1. 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ółowoJava. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu
Bardziej szczegółowoPodstawy Języka Java
Podstawy Języka Java Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania, w którym programy definiuje się za pomocą obiektów elementów łączących
Bardziej szczegółowoTechniki projektowania wzorce projektowe
Techniki projektowania wzorce projektowe 2 Przykład: Kasa fiskalna Opis dziedziny problemu System jest przeznaczony do obsługi procesu sprzedaży. Podstawowa funkcjonalność systemu obejmuje takie czynności
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 3 i 4 - przypomnienie wiadomości o OOP na przykładzie Javy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 8 marca 2017 1 / 20 mgr inż. Krzysztof Szwarc
Bardziej szczegółowoLaboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7
Instrukcja 7 Laboratoria 9, 10 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji
Bardziej szczegółowoPoczątki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8
Początki Javy Java została pierwotnie zaprojektowana dla telewizji interaktywnej, ale była to zbyt zaawansowaną technologią dla branży cyfrowej telewizji kablowej. James Gosling, Mike Sheridan i Patrick
Bardziej szczegółowoAplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java
Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment
Bardziej szczegółowoJava: kilka brakujących szczegółów i uniwersalna nadklasa Object
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów
Bardziej szczegółowoProgramowanie kontraktowe w Javie
20 maja 2010 Spis treści 1 Programowanie kontraktowe Geneza Założenia Kontrakty w języku Eiffel 2 Definiowanie specyfikacji Weryfikacja poprawności aplikacji 3 Wykorzystanie założeń kontraktów 4 Asercje
Bardziej szczegółowoZadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.
Zadanie: Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób. Na kolejnych zajęciach projekt będzie rozwijana i uzupełniana o kolejne elementy omawiane
Bardziej szczegółowoDefiniowanie własnych klas
Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:
Bardziej szczegółowoProgramowanie w języku Java WYKŁAD
Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 26.05.2014 WYKŁAD 13 Refleksja Data Access Object
Bardziej szczegółowoPrzykład -
Polimorfizm Przykład - http://rpodhajny.wordpress.com klasa bazowa A, oraz klasy pochodne B1, B2,, Bn (dziedziczące po klasie bazowej). niektóre klasy pochodne chcą mieć możliwość skorzystania z metody
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 11 - przegląd wybranych wzorców mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 24 maja 2017 1 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe Wzorce
Bardziej szczegółowoSexy unit testy. czyli o kilku praktykach w testach jednostkowych
Sexy unit testy czyli o kilku praktykach w testach jednostkowych Agenda sekund o samym sobie KILKA zdań o prezentacji kilka przemyśleń pomysłów na ułatwienie sobie życia pytań od publiczności O mnie Absolwent
Bardziej szczegółowoLaboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6
Instrukcja 6 Laboratorium 8 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji
Bardziej szczegółowoLaboratorium 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ółowoLaboratorium z przedmiotu: Inżynieria Oprogramowania INEK Laboratorium 10 Testy jednostkowe z użyciem narzędzia JUnit
Laboratorium 10 Testy jednostkowe z użyciem narzędzia JUnit 1 Cel laboratorium: Nabycie umiejętności tworzenia testów jednostkowych za pomocą narzędzia JUnit. 1. Należy wykonać test jednostkowy metod klasy,
Bardziej szczegółowoKlasy 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ółowoProgramowanie 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ółowoWprowadzenie do Behaviordriven
Wprowadzenie do Behaviordriven development Jakub Kosiński Email: ja@ghandal.net Czym jest BDD? praktyka, powstała na podstawie TDD, wykorzystywana w zwinnych metodykach stworzona przez Dana Northa w 2003
Bardziej szczegółowoProgramowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................
Bardziej szczegółowoRysunkowy tutorial Możesz swobodnie dystrybuować ten plik jeśli pozostawisz go w nietkniętym stanie. Możesz także cytować jego fragmenty umieszczając w tekście odnośnik http://mbartyzel.blogspot.com Jak
Bardziej szczegółowoAplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium
Bardziej szczegółowoProgramowanie 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ółowoCo jeszcze mogą nam dać adnotacje? Adam Warski
Co jeszcze mogą nam dać adnotacje? Adam Warski Weryfikacja statyczna Sprawdzanie własności programu bez jego uruchomienia Weryfikacja statyczna Najprostszy przykład: Sprawdzanie typów Przy wywołaniu metody
Bardziej szczegółowo