Programowanie kontraktowe w Javie
|
|
- Maja Rogowska
- 8 lat temu
- Przeglądów:
Transkrypt
1 20 maja 2010
2 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 Narzędzia wspierające programowanie kontraktowe w Javie 5 6
3 Cele prezentacji 1 Przedstawienie koncepcji programowania kontraktowego 2 Poznanie narzędzi do CDD w javie 3 Przykład wykorzystania kontraktów
4 Kontrakt Programowanie kontraktowe Geneza Założenia Kontrakty w języku Eiffel Kontrakt Umowa między dwiema stronami: kupującym i sprzedającym dotycząca dostarczenia przez sprzedającego określonego dobra kupującemu w zamian za zatwierdzoną rekompensatę. Zawartość kontraktu Opis sprawy Warunki akceptacji Zasady zachowania kontraktu Warunki zerwania kontraktu
5 Wzmianki Programowanie kontraktowe Geneza Założenia Kontrakty w języku Eiffel Pierwsze wzmianki o programowaniu kontraktowym już w 1986 roku Bertrand Meyer - twórca języka Eiffel i propagator Design by Contract Contract Driven Development, Design by Contract, Contract Programming
6 Kontrakt w programowaniu Geneza Założenia Kontrakty w języku Eiffel Przedstawienie warunków specyfikacji oprogramowania w postaci formalnie zdefiniowanych założeń działania aplikacji. Określanie już na wstępie warunków w jakich dana część kodu może być używana a w jakich nie. Zapewnienie spełniania podanych warunków przez metody w całym okresie tworzenia aplikacji.
7 Kontrakty w kodzie Geneza Założenia Kontrakty w języku Eiffel Co oznacza uzycie kontraktów przy pisaniu programu? Definiowanie formalnych znanych z OCLa warunków wejściowych, wyjściowych i inwariantów (niezmienników) dla metod programowych i klas je zawierających. Preconditions Postconditions Invariants
8 Kontrakty w języku Eiffel Geneza Założenia Kontrakty w języku Eiffel Eiffel językiem z natywnie zdefiniowanymi kontraktami Położenie dużego nacisku na definiowanie kontraktów jako nieodłącznych części kodu Instrukcje check, require, ensure jako odpowiednio inwarianty, pre i postconditions Inwarianty także dla warunków pętli (loop invariants)
9 Definiowanie specyfikacji Definiowanie specyfikacji Weryfikacja poprawności aplikacji Formalne zdefiniowanie założeń działania aplikacji Specyfikacja programowa ubrana w kontrakty What does it expect? What does it guarantee? What does it maintain? Problem? Wymaga wiedzy programisty o kontekście działania klasy
10 Definiowanie specyfikacji - Zasady Definiowanie specyfikacji Weryfikacja poprawności aplikacji Wazną zasadą łaczacą kontrakty z programowaniem obiektowym jest zasada dziedziczenia kontraktów. Klasa dziedzicząca kontrakt może: 1 Zachować lub zacieśnić warunki wejściowe metody 2 Zachować lub poszerzyć warunki wyjściowe metody 3 Zachować lub zacieśnić niezmienniki klasy require no more, promise no less
11 Weryfikacja poprawności aplikacji Definiowanie specyfikacji Weryfikacja poprawności aplikacji Jeden kontrakt opisuje wszystkie możliwe przypadki wykorzystania danej klasy. Może to być uznawane za pewną słabość praktyki, gdyż w przeciwieństwie do TDD nie pozwala na zagłębianie się w konkretne przypadki implementacji. Kontrakt jest jasno zdefiniowany i widoczny zarówno dla klienta jak i twórcy Aplikacje weryfikuje się tylko pod względem załozeń kontraktu
12 Zadania i benefity kienta i dostawcy Definiowanie specyfikacji Weryfikacja poprawności aplikacji Klient Nie musi sprawdzać wyjścia Kontrakt gwarantuje poprawność rezultatu Dba o zapewnienie poprawności danych wejściowych Dostawca Nie musi sprawdzać danych wejsciowych Kontrakt gwarantuje ich poprawność Zapewnia poprawny rezultat operacji
13 Kontrakt a test jednostkowy Wykorzystanie założeń kontraktów Kontrakt opisuje generalny przypadek testowy dla obejmowanej klasy Definiuje wartości wejściowe parametrów metod Służy jako wyrocznia opisująca warunki poprawności rezultatów metod
14 Wykorzystanie założeń kontraktów Wspomaganie praktyki testów jednostkowych Kontrakty jako pomocniczy element testowania jednostkowego Pomaga zdefiniować sensowne wartości wejściowe Określa kontekst wykorzystania klasy Ogranicza odpowiedzialność programisty - nie wychodzimy poza kontrakt Mozna na jego podstawie wyspecyfikować szczegółowe przypadki testowe
15 Asercje jako pseudokontrakty Asercje Narzędzia wspierające programowanie kontraktowe w Javie Jak działają Pozwalają testować założenia programu w samym kodzie Składają się z keywordu assert i wyrażenia logicznego definiującego warunek działania programu Mogą wywoływać metody Niespełnienie warunku wyrzuca AssertionError Wstępnie mogą być wykorzystane do imitacji pre- postconditions i inwariantów
16 Asercje - Przykład Programowanie kontraktowe Asercje Narzędzia wspierające programowanie kontraktowe w Javie Asercje bezpośrednio w kodzie // assert that the absolute value is >= 0 assert ( number >= 0 && number <= 10 ) : "bad number: " + number; Asercje w testach jednostkowych Assert.assertEquals(5, new Calc().add(2, 3));
17 Asercje - Problemy Asercje Narzędzia wspierające programowanie kontraktowe w Javie Wymagają pisania asercji w każdej metodzie Ograniczona możliwość kontroli Mogą zostać wyłączone (domyślnie wyłączone) Mimo wszystko stanowią dobry punkt wyjścia do implementacji kontraktów w Javie.
18 Narzędzia CDD w Javie Asercje Narzędzia wspierające programowanie kontraktowe w Javie Ułatwiają wprowadzenie w życie programowania kontraktowego w języku Java. Przykładowe narzędzia C4J contract4j icontract Każde z nich reprezentuje inne rozwiązanie definiowania kontraktów w kodzie programów języka Java.
19 C4J Programowanie kontraktowe Asercje Narzędzia wspierające programowanie kontraktowe w Javie Kontrakty jako klasy generyczne parametryzowane typem zakontraktowanej klasy Warunki pre, post i inwarianty jako metody z asercjami Enkapsulacja warunków kontraktu w tych metodach Dzięki parametryzacji klasy można odwoływać się do metod i pól zakontraktowanej klasy Wszystko pisane w standardowym kodzie Javy
20 C4J - Przykład Programowanie kontraktowe Asercje Narzędzia wspierające programowanie kontraktowe w = "DummyContract") public class Dummy { protected List m_stuff = new LinkedList(); } public int additem(object item) { m_stuff.add(item); return m_stuff.size(); }
21 C4J - Przykład Programowanie kontraktowe Asercje Narzędzia wspierające programowanie kontraktowe w Javie public class DummyContract extends ContractBase<Dummy> { public DummyContract(Dummy target){ super(target); } public void classinvariant(){ assert m_target.m_stuff!= null; } public void pre_additem(object item) { super.setpreconditionvalue("list-size", m_target.m_stuff.size()); } public void post_additem(object item) { assert m_target.m_stuff.contains(item); int presize = super.getpreconditionvalue("list-size"); assert presize == m_target.m_stuff.size() - 1; assert m_target.m_stuff.size() == super.getreturnvalue(); } }
22 C4J Programowanie kontraktowe Asercje Narzędzia wspierające programowanie kontraktowe w Javie C4J - Wady i zalety: Odseparowanie kodu klasy od kontraktów Kontrakty pisane w kodzie Javy łatwa możliwość zmiany i odnajdywania błędów Możliwość wykorzystania mechanizmów Javy (np. dziedziczenia) na klasach kontraktów Dostępny plugin do eclipse Konieczność pisania dodatkowych linijek kodu
23 contract4j Programowanie kontraktowe Asercje Narzędzia wspierające programowanie kontraktowe w Javie Rozwiazanie odmienne od poprzedniego Biblioteka zawierająca warunki Pre, Post i Invarianty jako adnotacje klas i metod W adnotacji w Stringu pisze się warunki logiczne uzywając składni javy i paru słow kluczowych ($old, $result etc.) Wykorzystuje zdobycze programowania aspectowego (AspectJ) Aspekty przy akzdym wywołaniu metody lub odwolaniu się do pola sprawdzają warunki je opisujące
24 contract4j - Przykład Asercje Narzędzia wspierające programowanie kontraktowe w interface BankAccount >= 0"); float >= == $old($this.balance)+amount && $return == $this.balance") float deposit(float >= 0 && $this.balance { amount >= == $old($this.balance)-amount && $return == $this.balance") float withdraw(float amount);... }
25 contract4j Programowanie kontraktowe Asercje Narzędzia wspierające programowanie kontraktowe w Javie contract4j - wady i zalety Proste i intuicyjne użycie Nie wymaga dużego nakładu pracy programisty Brak potrzeby uczenia się nowych technik pisania kodu Programista nie ma większej kontroli nad procesem sprawdzania kontraktów Konieczność podpinania pod projekt biblioteki aspektów W suchym Stringu ciężej można doszukać się błędów w opisie warunków
26 icontract Programowanie kontraktowe Asercje Narzędzia wspierające programowanie kontraktowe w Javie Podobne do contract4j Warunki zapisywane w dokumentacji klas i metod
27 icontract - Przykład Asercje Narzędzia wspierające programowanie kontraktowe w Javie /** implies top()!= null // no null objects */ public interface Stack { /** o!= null top() == o */ void push(object o); /** * == top()@pre */ Object pop();... }
28 icontract Programowanie kontraktowe Asercje Narzędzia wspierające programowanie kontraktowe w Javie icontract - wady i zalety Proste w użyciu Pomaga w stworzeniu i utrzymaniu pełnej dokumentacji metod Wsparcie dla kwantyfikatorów logicznych Możliwość zdefiniowania licznych odseparowanych warunków dla tej samej metody lub pola Ciężko doszukać się w komentarzu błędów
29 Programowanie kontraktowe nie jest nowym podejsciem do tworzenia oprogramowania Pomaga w zapewnieniu spójności działania apliakcji z oczekiwaniami Ułatwia pracę i zmniejsza odpowiedzialność programisty Nie zastępuje testów jednostkowych ale je dopełnia
30 Źródła Programowanie kontraktowe Power of Design By Contract, b y c ontract.htmlretokrame icontract: design by contract in java, cooltools.html C4J - CDD Java tool, contract4j: Design by cotnract for Java,
31 Przedstawienie uzycia bilbioteki contract4j jako narzedzia wspomagajacego wprowadzanie CDD w projekcie. Potrzebujemy: Eclipse IDE Aspect Development Tool for Eclipse contract4j.jar
Wprowadzenie 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ół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ół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ółowoREFERAT PRACY DYPLOMOWEJ
REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany
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ół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 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ółowoSpecyfikacje w praktyce na przykładzie JML-a. Sesja I
Specyfikacje w praktyce na przykładzie JML-a Sesja I Co to jest JML? Java Modeling Language Język Modelowania Javy Język wyrażania własności programów logika pierwszego rzędu Składnia zrozumiała dla programistów
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ółowoUML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.
UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami
Bardziej szczegółowoProgramowanie aspektowe na przykładzie AspectJ JUG Poznań, Jacek Pospychała
Programowanie aspektowe na przykładzie AspectJ Plan prezentacji Co to programowanie aspektowe i AspectJ Szybki start z AspectJ (przykład) Uruchamianie aplikacji z aspektami Jak to działa Możliwości wplatania
Bardziej szczegółowoSpecyfikacje formalne
Specyfikacje formalne część II Piotr Szczepański Na podstawie: Formal Specification, Andreas Roth, Peter H. Schmitt Krótkie przypomnienie JML Co to jest formalna specyfikacja? Co to jest OCL? Składnia
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ółowoTechniki efektywnego testowania kodu dla programistów Java (Spock
Program szkolenia: Techniki efektywnego testowania kodu dla programistów Java (Spock/JUnit) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Techniki efektywnego testowania kodu
Bardziej szczegółowoInformacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Bardziej szczegółowoWprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o
Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie 1 czerwca 2009 Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie = bjects = database for objects w pełni obiektowa
Bardziej szczegółowoEnkapsulacja, dziedziczenie, polimorfizm
17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja
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ół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ółowoBehavior Driven Development (BDD)
Wydział Informatyki i Zarządzania Wrocław, 12 marca 2010 Agenda Wprowadzenie 1 Wprowadzenie 2 3 4 BDD w Javie 5 6 Cele prezentacji Wprowadzenie Cele prezentacji Prawda o projektach przedstawienie podejścia
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ółowoDokumentacja techniczna API systemu SimPay.pl
Wprowadzenie Dokumentacja techniczna API systemu SimPay.pl Wersja 1.0 z dnia 24.03.2015 r. API serwisu SimPay.pl opiera się o danych wysyłanych i zwracanych w formie JSON. W przypadku napotkania jakiegokolwiek
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 Testowanie oprogramowania Wykład 13 Wiktor Zychla 2014
Projektowanie obiektowe oprogramowania Testowanie oprogramowania Wykład 13 Wiktor Zychla 2014 1 Wprowadzenie State-of-the-art współczesnego warsztatu narzędzi testujących obejmuje nie tylko metodologie
Bardziej szczegółowoZaawansowane programowanie w języku C++
Kod szkolenia: Tytuł szkolenia: C/ADV Zaawansowane programowanie w języku C++ Dni: 3 Opis: Uczestnicy szkolenia zapoznają się z metodami wytwarzania oprogramowania z użyciem zaawansowanych mechanizmów
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ół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ółowoDziedziczenie. 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ół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ółowoDokument Detaliczny Projektu
Dokument Detaliczny Projektu Dla Biblioteki miejskiej Wersja 1.0 Streszczenie Niniejszy dokument detaliczny projektu(ddp) przedstawia szczegóły pracy zespołu projektowego, nad stworzeniem aplikacji bazodanowej
Bardziej szczegółowoProgram szkolenia: Test Driven Development (TDD) using Spock or JUnit 5
Program szkolenia: Test Driven Development (TDD) using Spock or JUnit 5 Informacje: Nazwa: Test Driven Development (TDD) using Spock or JUnit 5 Kod: craft-test-tdd Kategoria: Testowanie automatyczne Grupa
Bardziej szczegółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoProgramowanie 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ół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ół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ółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
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ółowoProgramowanie 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ółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
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ółowoJava - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński
Java - wprowadzenie Programowanie Obiektowe Mateusz Cicheński O języku Czym jest Java Cechy charakterystyczne języka Przykładowe zastosowania Składnia języka Podstawowe typy Wybrane słowa kluczowe Plan
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ół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ółowoProduktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i
Program szkolenia: Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Produktywne tworzenie aplikacji webowych z
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ółowoMultimedia JAVA. Historia
Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania
Bardziej szczegółowoInformatyka 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ółowoTworzenie aplikacji w języku Java
Tworzenie aplikacji w języku Java Wykład 1 Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009
Bardziej szczegółowoScala - programowanie obiektowo-funkcyjne
Program szkolenia: Scala - programowanie obiektowofunkcyjne Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Scala - programowanie obiektowo-funkcyjne Scala-Scala Scala developerzy
Bardziej szczegółowoMichał Olejnik. 22 grudnia 2009
Continuous TDD Politechnika Wrocławska Informatyka 22 grudnia 2009 Agenda Wprowadzenie 1 Wprowadzenie 2 3 4 5 Agenda Wprowadzenie 1 Wprowadzenie 2 3 4 5 Agenda Wprowadzenie 1 Wprowadzenie 2 3 4 5 Agenda
Bardziej szczegółowoSłowa kluczowe jak góry lodowe
Public Słowa kluczowe jak góry lodowe czyli rzecz o bibliotekach testowych Marcin Kowalczyk marcin.kowalczyk@tieto.com Spis treści Dlaczego słowa kluczowe są jak góry lodowe, po co tworzyć własne biblioteki
Bardziej szczegółowoJAX-RS czyli REST w Javie. Adam Kędziora
JAX-RS czyli REST w Javie Adam Kędziora Webservice Usługa sieciowa (ang. web service) komponent programowy niezależny od platformy i implementacji, dostarczający określonej funkcjonalności. SOAP,UDDI,XML,WSDL
Bardziej szczegółowoJęzyk JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy wykład 2, część 2 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa
Bardziej szczegółowoJęzyk JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język
Bardziej szczegółowoWstęp do programowania obiektowego. Wykład 2
Wstęp do programowania obiektowego Wykład 2 1 CECHY I KONCEPCJA PROGRAMOWANIA OBIEKTOWEGO 2 Cechy programowania obiektowego Dla wielu problemów podejście obiektowe jest zgodne z rzeczywistością (łatwe
Bardziej szczegółowoJava - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
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ół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ółowoDzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton
Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu
Bardziej szczegółowoJęzyki i metody programowania Java. Wykład 2 (część 2)
Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego
Bardziej szczegółowoTEMAT : 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ółowoZaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce
Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Bardziej szczegółowoProgramowanie za pomocą kontraktów. Design by Contract
Programowanie za pomocą kontraktów Design by Contract Przypadek rakiety Ariane 4 czerwca 1996, 12:34 GMT; miejsce startu: s kosmodrom Kourou (ELA3), Gujana Francuska Uwagi: start nieudany - rakietaa zeszła
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ółowoRozdział 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ółowoPodstawy 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ółowoPierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Pierwsze kroki Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura Co znaczy
Bardziej szczegółowoProgramowanie obiektowe Object programming. Elektrotechnika II stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)
Załącznik nr 7 do Zarządzenia Rektora nr 10/1 z dnia 1 lutego 01r. KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu Nazwa modułu Nazwa modułu w języku angielskim Obowiązuje od roku akademickiego 01/013 Programowanie
Bardziej szczegółowoInstrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse
Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse 1 Cel laboratorium: Nabycie umiejętności przygotowywania testów akceptacyjnych za pomocą narzędzia FitNesse 1. Wg wskazówek
Bardziej szczegółowoUML a kod. C++, Java i C#
UML a kod C++, Java i C# UML a kod w C++ i Javie Projektowanie oprogramowania! Dokumentowanie oprogramowania Diagramy przypadków użycia Klasy użytkowników i wykorzystywane funkcje Mogą sugerować podział
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ół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ółowoProgramowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania
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ółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami
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ółowoSzablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoProgram szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia
Program szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Receptury testowania automatycznego
Bardziej szczegółowoZaawansowane programowanie obiektowe - wykład 5
Zaawansowane programowanie obiektowe - wykład 5 dr Piotr Jastrzębski (czynnościowe) opisują zachowanie obiektów, komunikację pomiędzy nimi i ich odpowiedzialność. Interpreter Iterator (kursor) Łańcuch
Bardziej szczegółowoJęzyki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Bardziej szczegółowoCałościowe podejście do testowania automatycznego dla programistów. /C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia)
Program szkolenia: Całościowe podejście do testowania automatycznego dla programistów Java /C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas
Bardziej szczegółowoWywoływanie metod zdalnych
Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia
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ółowoEfekty uboczne błędów
Obsługa wyjątków Efekty uboczne błędów Fragment kodu programu jest bezpieczny (ang. exception-safe) jeżeli błędy, które wystąpią w trakcie przetwarzania tego kodu nie będą powodowały niepożądanych efektów
Bardziej szczegółowoObiekt 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ółowoAutomaty do zadań specjalnych. Olga Maciaszek-Sharma, Artur Kotow Wersja 1, 13.05.2014
Automaty do zadań specjalnych Olga Maciaszek-Sharma, Artur Kotow Wersja 1, 13.05.2014 Agenda Kilka pytań do publiczności Po co się męczyć? Studium przypadku Olympus Wprowadzenie Opis rozwiązania Wnioski
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ółowoCzym są właściwości. Poprawne projektowanie klas
Z akcesorów get i set korzysta każdy kto programuje w C#. Stanowią one duże udogodnienie w programowaniu obiektowym. Zapewniają wygodę, bezpieczeństwo i znacząco skracają kod. Akcesory są ściśle związane
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ół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ółowoKonstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.
Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class
Bardziej szczegółowoWzorce 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ół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ółowoProgramowanie obiektowe
Wykład 1 21 lutego 2019 Plan wykładu 1 Opis wykładu Zaliczenie i egzamin Literatura 2 3 Modelowanie obiektowe Abstrakcja Hermetyzacja Dziedziczenie Polimorfizm 4 Opis wykładu Zaliczenie i egzamin Literatura
Bardziej szczegółowoJęzyki i techniki programowania Ćwiczenia 4 Wzorce
Języki i techniki programowania Ćwiczenia 4 Wzorce Wzorce to metoda generacji różnych klas lub różnych funkcji. Autor: Marcin Orchel Przykład 1: Jeśli dana klasa C wykonuje obliczenia numeryczne, i wymaganiem
Bardziej szczegółowoZwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)
Program szkolenia: Zwinna współpraca programistów i testerów z wykorzystaniem BDD i Spec Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Zwinna współpraca programistów i testerów
Bardziej szczegółowoProjektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne
Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec
Bardziej szczegółowoProgramowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne
Programowanie w Javie nazwa SYLABUS A. Informacje ogólne Elementy składowe sylabusu Nazwa jednostki prowadzącej kierunek Nazwa kierunku studiów Poziom kształcenia Profil studiów Forma studiów Kod Język
Bardziej szczegółowoJAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
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ółowo