Programowanie za pomocą kontraktów. Design by Contract
|
|
- Alina Popławska
- 6 lat temu
- Przeglądów:
Transkrypt
1 Programowanie za pomocą kontraktów Design by Contract
2 Przypadek rakiety Ariane 4 czerwca 1996, 12:34 GMT; miejsce startu: s kosmodrom Kourou (ELA3), Gujana Francuska Uwagi: start nieudany - rakietaa zeszła z kursu i została zniszczona przez oficera bezpieczeństwa kosmodromu. Przyczyną katastrofy było użycie niezmienionego opro- gramowaniaa z rakiety Ariane 4. Straty $.
3 Poprawne współużywanie modułów programowych Brak formalizacji semantyki modułów jest przyczyną niepoprawnego używania modułów programowych. At the time of the failure, the software in the two SRIs was doing a data conversion from 64-bit floating point to 16-bit integer. The floating point number had a value greater than what could be represented by a 16-bit signed integer; this resulted in an overflow software exception. Code was reused from the Ariane 4 guidance system. The Ariane 4 has different flight characteristics in the first 30 seconds of flight and exception conditions were generated on both inertial guidance system (IGS) channels of the Ariane 5. Kod będący przyczyną wypadku rakiety Ariane 5: convert (horizontal_bias: DOUBLE): INTEGER Procedura ta działała poprawnie w rakiecie Ariane 4, której parametry lotne ograniczały wartości parametru: horizontal_bias, do przedziału, który gwarantował poprawne działanie procedury. Powyższa procedura została przeniesiona do oprogramowania rakiety Ariane 5, której parametry lotne powodowały przekroczenie poprawnych wartości parametru horizontal_bias.
4 Poszukiwanie nowej metodyki programowania Poprawność składniowa współużywalnych modułów może być zweryfikowana przez kompilator. Poprawność semantyczna ujawnia się dopiero w trakcie działania programu. Przyczyną katastrofy Ariane 5 była wykorzystanie procedury, o nieznanych własnościach semantycznych. W związku z tym, niespełniony został niejawny kontrakt na sposób korzystania z kodu. W wyniku analizy systemowej i podczas projektowania powstaje specyfikacja, która koncentruje się na składni programów, a nie ich semantyce. X27 # element1_st # element2_sz # element3_tp + ps(el) + pp() : El
5 Poszukiwanie nowej metodyki programowania Poprawność składniowa współużywalnych modułów może być zweryfikowana przez kompilator. Poprawność semantyczna ujawnia się dopiero w trakcie działania programu. Przyczyną katastrofy Ariane 5 była wykorzystanie procedury, o nieznanych własnościach semantycznych. W związku z tym, niespełniony został niejawny kontrakt na sposób korzystania z kodu. W wyniku analizy systemowej i podczas projektowania powstaje specyfikacja, która koncentruje się na składni programów, a nie ich semantyce. X27 # element1_st # element2_sz # element3_tp + ps(el) + pp() : El Stos # storage # size # top + push(element) + pop() : Element
6 Specyfikacja semantyki programów Kontrakt: Warunki poprawnego korzystania z obiektów Zobowiązania obiektów semantyka programów Kontrakt na metodę push() klasy Stos: Zobowiązania Klient Musi spełnić warunki początkowe Stos nie jest pełny, wstawiany element nie jest pusty Dostawca Musi spełnić warunki końcowe Zapamiętuje podany element na szczycie stosu Gwarancje Korzysta z warunków końcowych Na szczycie stosu pojawi się nowy element Może założyć spełnienie warunków początkowych Nie musi weryfikować przepełnienia stosu i poprawności elementu
7 Analiza systemowa za pomocą kontraktów 1. Specyfikacja ADT (Abstract Data Type) z językiem formalnej specyfikacji (VDM, Z, logika Hoare'a, itp) 2. UML z językiem OCL (Object Constraint Language) Formalizacja specyfikacji ADT Semantyki algebraiczne Formalny zapis pełnej specyfikacji abstrakcyjnego typu danych z zastosowaniem semantyk algebraicznych, obejmuje pięć elementów: nazwę ADT z opcjonalną listą parametrów generycznych; predefiniowane ADT niezbędne do definicji semantyki ADT; interfejs ADT zdefiniowany jako zbiór sygnatur operacji; dziedziny poszczególnych operacji zdefiniowane jako warunki początkowe operacji; semantykę ADT wyrażoną w postaci aksjomatów;
8 Nazwa ADT ADT name: STACK [G] gdzie G - jest formalnym parametrem generycznym Specyfikacja ADT z parametrami generycznymi reprezentuje cały zbiór specyfikacji ADT dla wszystkich potencjalnych wartości parametru generycznego. W powyższym przypadku specyfikacja reprezentuje zbiór ADT: STACK[int], STACK[float], STACK[String], STACK[Osoba], itd. Predefiniowane ADT Domains: boolean określają ADT o predefiniowanej semantyce, które będą wykorzystane do definicji semantyki danego ADT.
9 Interfejs ADT Functions: put: STACK[G] G STACK[G] - modifier remove: STACK[G] STACK[G] - modifier item: STACK[G] G - accessor empty: STACK[G] BOOLEAN - accessor new: STACK[G] - modifier Interfejs ADT jest wyspecyfikowany jako zbiór sygnatur wszystkich operacji właściwych dla ADT. Operacje ADT są podzielone na dwie klasy: operacji modyfikujących stan ADT (ang. modifier) i operacji realizujących niemodyfikujący dostęp do stanu ADT (ang. accessor) (dla uproszczenia w dalszych rozważaniach przyjęto, że te dwa zbiory operacji są rozłączne, a operacje odczytujące stan zwracają jedynie pojedyncze wartości). Typami parametrów wejściowych operacji są: definiowany ADT, dla wszystkich operacji za wyjątkiem konstruktora; predefiniowane ADT; parametry generyczne. Typami zwrotnymi operacji są: definiowany ADT, dla operacji klasy modifier; predefiniowane ADT, dla operacji klasy accessor; parametry generyczne, dla operacji klasy accessor. Oznaczenie: służy do wskazania operacji o ograniczonej dziedzinie parametrów wejściowych.
10 Operacje o ograniczonej dziedzinie Preconditions: remove(s) require not empty(s) item(s) require not empty(s) Dla każdej operacji o ograniczonej dziedzinie parametrów wejściowych należy zdefiniować warunek początkowy określający warunki niezbędne dla poprawnego wykonania operacji. Warunki początkowe odwołują się do stanu wystąpień ADT lub do wartości parametrów wejściowych. Warunki początkowe są definiowane jako wyrażenia logiczne, które muszą być prawdziwe w momencie wywoływania operacji. Definicje warunków początkowych opierają się na składni operacji ADT.
11 Semantyka ADT Axioms: item(put(s,x)) = x remove(put(s,x)) = s empty(new) not empty(put(s,x)) Semantyka ADT jest definiowana w postaci zbioru aksjomatów definiujących zależności między operacjami ADT. Aksjomaty są definiowane w postaci wyrażeń logicznych, które muszą być spełnione dla wszystkich stanów potencjalnych wystąpień ADT. Definicje aksjomatów wykorzystują składnię operacji ADT zdefiniowaną w sekcji Functions. Zbiór aksjomatów powinien opisywać kompletną semantykę ADT. To znaczy dla każdej operacji modyfikującej stan ADT powinno się określić zbiór wartości wszystkich operacji odczytujących stan ADT. W sumie dla n operacji modyfikujących i m odczytujących stan ADT należałoby zdefiniować m n aksjomatów. Jednak, nie zawsze jest to możliwe. Aksjomaty powinny być formułowane w sposób jak najbardziej ogólny. Na przykład: not empty(put(s,x)) vs. not empty(put(new,x))
12 Pełna specyfikacja ADT Specyfikacja ADT STACK ADT NAME STACK [G] DOMAINS Boolean FUNCTIONS put: STACK[G] G STACK[G] remove: STACK[G] STACK[G] item: STACK[G] G empty: STACK[G] BOOLEAN new: STACK[G] AXIOMS item(put(s,x)) = x remove(put(s,x)) = s empty(new) not empty(put(s,x)) PRECONDITIONS remove(s) require not empty(s) item(s) require not empty(s)
13 Kompletność definicji ADT Po czym rozpoznań, że specyfikacja semantyki ADT jest kompletna. Reguła mówiąca, że dla m operacji modyfikujących i n odczytujących stan ADT należy zdefiniować m n aksjomatów ma ograniczony zasięg stosowalności. Niektórych aksjomatów nie można zdefiniować ze względu na niespełnienie warunków początkowych. Z tego powodu nie można określić wartości aksjomatu: item(new) Dla innych aksjomatów nie można bezpośrednio określić ich wartości: item(remove(s))=? empty(remove(s))=? Specyficzne relacje między operacjami ADT: na przykład przemienność lub komutatywność, pozwalają ograniczyć zbiór aksjomatów.
14 Poprawność wyrażeń definiowanych na ADT Składnia operacji ADT określa sposób konstruowania poprawnych składniowo wyrażeń na ADT. put(new,x) empty(remove(put(put(new,x1),x2))) item(new) Poprawność składniowa nie gwarantuje poprawności semantycznej. Definicja semantycznej poprawności wyrażeń Niech f(x 1,, x n ) będzie poprawnym składniowo wyrażeniem, odwołującym się do jednej lub więcej operacji jakiegoś ADT. Wyrażenie to będzie semantycznie poprawne wtedy i tylko wtedy, gdy wszystkie wartości x i są (rekurencyjnie) poprawne poprzez spełnienie warunków początkowych operacji. Zapytania - wyrażenia, których wartości zwrotne nie są typu ADT: item(put(new,x)) empty(remove(put(put(new,x1),x2))) item(new)
15 Kompletność definicji ADT Definicja kompletności specyfikacji ADT Specyfikacja ADT typu T jest kompletna wtedy i tylko wtedy, gdy zdefiniowany zbiór aksjomatów pozwala dla dowolnego poprawnego składniowo wyrażenia e: stwierdzić semantyczną poprawność wyrażenia; jeżeli wyrażenie e jest poprawne i jest zapytaniem, wyznaczyć wartość tego wyrażenia. Definicja spójności ADT Specyfikacja ADT typu spójna wtedy i tylko wtedy, gdy dla dowolnego poprawnego składniowo zapytania e, aksjomaty ADT pozwalają na wyznaczenie, co najwyżej jednej wartości e. Możliwe jest formalne dowodzenie kompletności i spójności specyfikacji poszczególnych ADT.
16 Programowanie za pomocą kontraktów - Asercje Język specyfikacji semantyki oprogramowania Asercje są wyrażeniami logicznymi opisującymi semantykę klas. Asercje są wykorzystywane do definiowania: warunków początkowych określających poprawne wartości parametrów wejściowych metody i stanu obiektu, niezbędnych dla poprawnego działania metody; warunków końcowych określających poprawne wartości parametrów wyjściowych metody i stanu obiektu gwarantowanych po zakończeniu działania metody; niezmienników klas określających dopuszczalne stany wystąpień klasy przez cały czas ich życia.
17 Specyfikacja poprawności oprogramowania Formuła poprawności oprogramowania logika Hoare a: { V } S { P } Jeżeli warunek początkowy V (hipoteza) jest spełniony bezpośrednio przed wykonaniem programu S, wtedy warunek końcowy P (teza) będzie spełniony po wykonaniu programu S. Przykład: Warunek początkowy: { x >= 0 } Program: x := x + 5 Warunek końcowy: { x >= 5 } Warunki początkowe i końcowe związane z metodami klasy opisują kontrakt miedzy klasą (modułem) i jej klientami. Kontrakt ten wiąże klasę tak długo, jak wywołania metod klasy spełniają warunki początkowe. Wtedy klasa powinna zagwarantować, że jej stan końcowy i parametry wyjściowe są zgodne warunkami końcowymi. Niespełnienie warunków początkowych oznacza błąd po stronie klienta klasy. Niespełnienie warunków końcowych oznacza błąd po stronie dostawcy klasy.
18 Użyteczność formuły poprawności Użyteczność formuły poprawności jest zależna od jej siły. Siła formuły poprawności oprogramowania jest odwrotnie proporcjonalna do siły warunku początkowego i wprost proporcjonalna do siły warunku końcowego. 1. { False } S { } Warunek początkowy False jest najsilniejszą możliwą asercją. Warunek ten nigdy nie jest spełniony, niezależnie od stanu początkowego. Każde wywołanie S będzie niepoprawne. W związku z tym, każdy program jest poprawny z powyższą specyfikacją. { False } null { } { False } for i =1 to 100 do y := y + y i ; end; { } 2. { True} S { } Wszystkie wywołania modułu S są poprawne. 3. { } S { True } Warunek końcowy True jest najsłabszą możliwą asercją. Każde pomyślne zakończenie programu S jest poprawne niezależnie od jego wyniku. 4. { x >= 9 } y := x + 5 { y = x + 5 } Powyższy warunek końcowy jest przykładem bardzo silnej asercji. Dla danej wartości początkowej x istnieje tylko jedno poprawne rozwiązanie.
19 Asercje w języku Eiffel Asercje umożliwiają na deklaratywną specyfikację warunków poprawności semantyczne kodu programów: class STACK [G] składnia Eiffel item: G is require -- warunki początkowe not_empty: not empty do end put (x: G) is require -- warunki początkowe not_full: not full -- wymaganie implementacji do ensure -- warunki końcowe not_empty: not empty added_to_top: item = x one_more_item: count = old count + 1 end remove is require -- warunki początkowe not_empty: not empty do ensure -- warunki końcowe not_full: not full one_fewer_item: count = old count 1 end end
20 Asercje a defensywny styl programowania Deklaratywna definicja warunków poprawnego wykonania: class STACK [G] remove is require -- warunki początkowe not_empty: not empty do ensure -- warunki końcowe not_full: not full one_fewer_item: count = old count 1 end end zamiast proceduralnej implementacji wykrywania i obsługi błędów: class STACK [G] remove is do if empty then print ( Błąd: próba pobrania z pustego stosu ) else count := count 1 end end
21 Niezmienniki klas Warunki początkowe i końcowe są cechami poszczególnych metod klasy. Niezmienniki klas są cechami całej klasy, to znaczy muszą być spełnione przez wszystkie metody klasy. class STACK [G] invariant count_non_negative: count >= 0 count_bounded: count <= capacity consistent_with_array_size: capacity = array.size empty_if_no_elements: empty = (count = 0) item_at_top: (count>0) implies (array(count) = item) end s.new s.put(x) s.put(y) s.item s.remove S1 S2 S3 S4 cykl życia obiektu
22 Asercje w Javie Asercja jest instrukcją języka służącą do testowania założeń programisty, co do stanu programu w określonym momencie jego działania. Każda asercja zawiera wyrażenie logiczne, które w poprawnym stanie programu powinno być prawdziwe. Niespełnienie asercji jest zgłaszane jako specjalny wyjątek. Składnia: assert wyrażenie_logiczne; lub assert wyrażenie_logiczne: wyrażenie; Drugi argument (wyrażenie) umożliwia przekazanie dodatkowych informacji do procedury obsługi błędu.
23 Typowe zastosowania asercji Niezmienniki wewnętrzne kontrola wewnętrznej poprawności programów Niezmienniki przepływu sterowania kontrola poprawności Warunki początkowe, końcowe i niezmienniki klas programowanie przez kontrakt Niezmienniki wewnętrzne Zamiast: if (i % 3 == 0) {... } else if (i % 3 == 1) {... } else { // tu wiemy, że (i % 3 == 2)... } Powinno być: if (i % 3 == 0) {... } else if (i % 3 == 1) {... } else { assert i % 3 == 2 : i;... }
24 Niezmienniki przepływu sterowania Zastosowanie asercji false w miejscu programu, do którego nigdy nie powinno znaleźć się sterowanie. void funkcja() { for (...) { if (...) return; } // Sterowanie nigdy nie powinno osiągnąć // tego punktu assert false; }
25 Warunki początkowe, końcowe i niezmienniki klas class Stos { static final int PUSTY = -1; private Object magazyn [ ]; private int rozmiar; private int szczyt_stosu;... public Object push (Object element) { assert szczyt_stosu < rozmiar 1; magazyn[++szczyt_stosu]=element; return element; assert szczyt_stosu!= PUSTY; } public Object pop ( ) { assert szczyt_stosu!= PUSTY return magazyn[szczyt_stosu--]; } }
26 Włączanie i wyłączanie asercji Ze względów wydajnościowych asercje domyślnie nie są weryfikowane w trakcie działania programu. Programista musi explicite zażyczyć sobie weryfikacji asercji podczas kompilacji programu za pomocą opcji: -enableassertions lub ea Argument tej opcji określa zasięg weryfikacji asercji: brak argumentów weryfikacja asercji we wszystkich klasach programu (za wyjątkiem klas systemowych) nazwa pakietu we wszystkich klasach danego pakietu nazwa klasy w danej klasie java -ea:com.wombat.fruitbat... BatTutor Weryfikacja asercji w klasach systemowych jest odblokowywana za pomocą przełącznika: -enablesystemassertions lub -esa
27 Stosowanie asercji języku Java Asercje powinny być używane głównie w czasie debugowania kodu, ponieważ aerscje zgłaszają predefiniowany typ wyjątku AssertionError. Można zablokować wyłączenie asercji static { boolean assertsenabled = false; assert assertsenabled = true; if (!assertsenabled) throw new RuntimeException("Asserts must be enabled!!!"); } W ramach asercji nie wolno wykonywać fragmentów użytkowego kodu // akcja jest zawarta w asercji assert names.remove(null); // akcja wyciągnięta przed asercję // działa niezależnie od uaktywnienia asercji boolean nullsremoved = names.remove(null); assert nullsremoved; Poprawna redefinicja asercji w łańcuchu dziedziczenia nie jest wspierana przez kompilator, odpowiedzialność spoczywa na programiście.
28 Asercje w języku C++ W języku C++ dostępne jest makro: assert(). Służy ono do diagnostyki działania programów. W przypadku niespełnienia warunku logicznego podanego jako argument makra, do standardowego strumienia stderr wysłany będzie odpowiedni komunikat i następnie zostanie wywołana funkcja abort(). Przykład: #include <stdio.h> #include <assert.h> int main () { FILE * datafile; datafile=fopen ("file.dat","r"); assert (datafile); // jakieś działania na pliku... fclose (datafile); } return 0;
29 Asercje w języku C# W języku C# w czasie testowania programów można korzystać z klasy systemowej Debug. Jedną z metod tej klasy jest metoda Assert. public static void MyMethod(Type type, Type basetype) { Debug.Assert(type!= null, "Type parameter is null", "Can't get object for null type"); } // Perform some processing.
Programowanie 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ół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ółowoKurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa
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ół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ółowokiedy znowu uzyska sterowanie, to podejmuje obliczenie od miejsca, w którym poprzednio przerwała, i z dotychczasowymi wartościami zmiennych,
Korutyny Wykład13,str1 tak działa podprogram: PROGRAM GŁÓWNY wywołanie PODPROGRAM tak działają korutyny: KORUTYNA A resume B resume B KORUTYNA B resume A Korutyny Wykład13,str2 Korutyny mają zwykle więcej
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ółowoKurs programowania. Wykład 9. Wojciech Macyna
Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy
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ółowoKlasyfikacja wyjątków
Obsługa wyjątków Klasyfikacja wyjątków Błędy w eksploatacji programów np. błędy użytkowników. Niedostępność zasobów żądanie przydziału zasobów nie może być zrealizowane np. w wyniku braku dostępnej pamięci
Bardziej szczegółowoKurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania
Wykład 11. 4 stycznia 2010 1 Kontrola poprawności podczas biegu programu 2 3 4 Asercje Asercja to formuła logiczna; Asercji używa się do kontrolowania czy np. wartość zmiennej ma odpowiedni typ lub mieści
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ółowoPodstawy Informatyki. Algorytmy i ich poprawność
Podstawy Informatyki Algorytmy i ich poprawność Błędy Błędy: językowe logiczne Błędy językowe Związane ze składnią języka Wykrywane automatycznie przez kompilator lub interpreter Prosty sposób usuwania
Bardziej szczegółowoWstęp do programowania
wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.
Bardziej szczegółowoLaboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
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ół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ół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ół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ół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ółowoLaboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów. mgr inż. Arkadiusz Chrobot
Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów mgr inż. Arkadiusz Chrobot 10 listopada 2010 1 Preprocesor Preprocesor jest programem uruchamianym przed właściwym procesem kompilacji
Bardziej szczegółowoWykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
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ół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ół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 w Internecie. Java
Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java
Bardziej szczegółowoWykład 2 Wybrane konstrukcje obiektowych języków programowania (1)
MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Problem: Jak zaimplementować stos? Co się stanie gdy dodamy do stosu obiekt typu Czlowiek? Co się stanie, gdy spróbujemy ten obiekt odczytać
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ółowoPARADYGMATY 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ół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ół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ółowoWstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)
Języki i Paradygmaty Programowania Laboratorium 1 Obiekty i klasy C++ Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać) UWAGA! Umiejętność tworzenia
Bardziej szczegółowoJava. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
Bardziej szczegółowoDawid Gierszewski Adam Hanasko
Dawid Gierszewski Adam Hanasko Chcemy stworzyć klasę w której możemy przechowywać dwie zmienne dowolnych typów Tworzymy tyle różnych klas ile potrzeba: Class ParaInt{ int pierwszy; Int drugi; Class ParaButow{
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ółowoWstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 Kilka podstawowych pojęć Definition Programy imperatywne zmieniają stan, czyli wartości zmiennych. Asercja = warunek logiczny, który
Bardziej szczegółowoKlasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13
Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods
Bardziej szczegółowoKlasy generyczne. ZbiórLiczb. ZbiórCzegokolwiek. Zbiór
Klasy generyczne Klasy generyczne Klasy generyczne są to klasy o parametryzowanych typach danych. Klasy generyczne posiadają kompletną implementację, jednak nie definiują typów danych wykorzystanych w
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ółowoWyjątki (exceptions)
Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.
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ółowoObszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
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ółowoUwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
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ółowoWspółbieżność w środowisku Java
Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych
Bardziej szczegółowoAbstrakcyjny typ danych
Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są
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ół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ół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ółowoWykład 7: Pakiety i Interfejsy
Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,
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ółowoDECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];
Braki w SQL obsługi zdarzeń i sytuacji wyjątkowych funkcji i procedur użytkownika definiowania złożonych ograniczeń integralnościowych Proceduralny SQL Transact- SQL używany przez Microsoft SQL Server
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 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ółowoWstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:
Bardziej szczegółowoDiagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1
Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1 Zofia Kruczkiewicz Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 1 Składnia elementów na diagramach UML 1. W prezentacji składni diagramów
Bardziej szczegółowoJzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )
Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,
Bardziej szczegółowoWstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2016/2017 Outline Moduły i bariery abstrakcji 1 Moduły i bariery abstrakcji Moduły co to jest i po co to jest? Duży system dzielimy na mniejsze, łatwiejsze
Bardziej szczegółowoKiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja
1 struktura, kolekcja Kiedy potrzebne Duża liczba danych takiego samego typu tablice a jak nieznana liczba elementów? dane zawierające wartości różnego typu (osoba: pesel, nazwisko, rok urodzenia, pracuje/niepracuje,
Bardziej szczegółowoAutomatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
Bardziej szczegółowoJęzyk JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,
Bardziej szczegółowoWyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.
Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,
Bardziej szczegółowoOptimizing Programs with Intended Semantics
Interaktywna optymalizacja programów 26 kwietnia 2010 Spis treści Spis treści Wstęp Omówienie zaproponowanego algorytmu na przykładzie Wewnętrzna reprezentacja reguł dotyczących optymalizacji Wybrane szczegóły
Bardziej szczegółowoPodstawy programowania obiektowego
Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie
Bardziej szczegółowo1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Bardziej szczegółowoWykład 8: Obsługa Wyjątków
Wykład 8: Obsługa Wyjątków Wyjątki Wyjątek to sytuacja nienormalna, która pojawia się w trakcie wykonania programu. W językach bez obsługi wyjątków, błędy są wykrywane i obsługiwane ręcznie, zwykle przez
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ół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ółowoPlatformy Programistyczne Podstawy języka Java
Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo
Bardziej szczegółowoPrzypomnienie o klasach i obiektach
Wykład 14 Programowanie obiektowe ciąg dalszy, str 1 Przypomnienie o klasach i obiektach -5 należydo int 314 należy do double false należy do boolean {27, 314,-15 należy do double[] wartość należy do typ
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Krzysztof Lemay, Naughton Barteczko R. Cadenhead JAVA, Java Podręcznik 2 wykłady dla kaŝdego Języka i ćwiczenia Programowania
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ółowoPARADYGMATY PROGRAMOWANIA Wykład 2
PARADYGMATY PROGRAMOWANIA Wykład 2 Definiowanie klas w C++ - ciąg dalszy Lista inicjalizująca konstruktora Przeznaczenie - do inicjalizacji pól klasy z kwalifikatorem const i inicjalizacji obiektów składowych
Bardziej szczegółowo1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)?
1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)? public static void test1() { Object[] o = new Object[] { "1", "2", "3" ; List l = new ArrayList(Arrays.asList(o));
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ół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ółowoPakiety i interfejsy. Tomasz Borzyszkowski
Pakiety i interfejsy Tomasz Borzyszkowski Pakiety podstawy W dotychczasowych przykładach nazwy klas musiały pochodzić z jednej przestrzeni nazw, tj. być niepowtarzalne tak, by nie doprowadzić do kolizji
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ółowoGeneratory. Michał R. Przybyłek
Generatory Michał R. Przybyłek 1 Wstęp Generator to potencjalnie nieskończony, leniwie obliczany, ciąg wartości. W zależności od tego, która ze stron decyduje o wygenerowaniu nowej wartości wyróżniamy
Bardziej szczegółowoIMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
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ółowoWykład. Materiały bazują częściowo na slajdach Marata Dukhana
Wykład Materiały bazują częściowo na slajdach Marata Dukhana Języki programowania Kompilowane np. C, C++, Pascal Interpretowane np. JavaScript, PHP, Python, VBA Pośrednie np. Java, C# Znane kompilatory
Bardziej szczegółowoKompilator języka C na procesor 8051 RC51 implementacja
Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub
Bardziej szczegółowoJęzyk C++ wykład VIII
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
Bardziej szczegółowoŚ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ółowoKlasy cd. Struktury Interfejsy Wyjątki
Klasy cd. Struktury Interfejsy Wyjątki Struktury Struktura pozwala na zdefiniowanie typu danych, który nie charakteryzuje się zbyt złożoną funkcjonalnością (np. punkt, kolor, etc). Do definiowania struktury
Bardziej szczegółowoProgramowanie obiektowe w C++ Wykład 12
Programowanie obiektowe w C++ Wykład 12 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) 1 / 22 Zakresowe pętle for double tab[5] {1.12,2.23,3.33,4.12,5.22 for(double x: tab)
Bardziej szczegółowoSzablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
Bardziej szczegółowoJava podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.
Java podstawy jęyka Wykład 2 Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne. Wyjątki: obsługa błędów Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego 12.03.2015
Bardziej szczegółowoTypy sparametryzowane
Typy sparametryzowane Streszczenie Celem wykładu jest zaprezentowanie typów sparametryzowanych. Czas wykładu 90 minut. Istnieją algorytmy, których zasada działania nie zależy od typu danych wejściowych.
Bardziej szczegółowoFunkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u
Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u będziemy używać w taki sam sposób, jak wbudowanych funkcji
Bardziej szczegółowoProgramowanie obiektowe zastosowanie języka Java SE
Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z
Bardziej szczegółowoProjektowanie klas c.d. Projektowanie klas przykład
Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej
Bardziej szczegółowoProgramowanie 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ółowoJęzyk ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Bardziej szczegółowoKatedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak
Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.
Bardziej szczegółowoPobieranie argumentów wiersza polecenia
Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:
Bardziej szczegółowoBEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska
BEAN VALIDATION Waldemar Korłub Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska Bean Validation Uniwersalny mechanizm walidacji danych we wszystkich warstwach aplikacji Warstwa interfejsu,
Bardziej szczegółowo