Programowanie i projektowanie obiektowe

Podobne dokumenty
Wstęp do programowania

Wstęp do programowania

Wstęp do programowania

Tworzenie aplikacji w języku Java

Programowanie i projektowanie obiektowe

Java EE produkcja oprogramowania

Podstawy i języki programowania

Programowanie, algorytmy i struktury danych

Python wstęp do programowania dla użytkowników WCSS

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

Podstawy programowania w języku C

Wstęp do programowania

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Wstęp do programowania

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Metody Metody, parametry, zwracanie wartości

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Wprowadzenie do języka Java

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Języki i metody programowania Java. Wykład 2 (część 2)

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Paradygmaty programowania

Podstawy programowania obiektowego

Programowanie RAD Delphi

Programowanie obiektowe zastosowanie języka Java SE

Algorytm. a programowanie -

Java. Programowanie Obiektowe Mateusz Cicheński

Podstawy języka Java. przygotował:

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Ćwiczenie 1. Przygotowanie środowiska JAVA

Programowanie obiektowe

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Programowanie obiektowe

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

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

Podstawy i języki programowania

Programowanie i projektowanie obiektowe

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Multimedia JAVA. Historia

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Java Podstawy JUST JAVA Michał Bereta Intytu Modelowania Komputerowego Wydział Fizyki, Matematyki i Informatyki Stosowanej

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Technologie cyfrowe semestr letni 2018/2019

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Wstęp do programowania

Podstawy programowania. Wprowadzenie

Java jako język programowania

1 Atrybuty i metody klasowe

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Microsoft IT Academy kurs programowania

Wykład 4: Klasy i Metody

JAVA?? to proste!! Autor: wojtekb111111

Wstęp do ruby dla programistów javy

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Technologie cyfrowe semestr letni 2018/2019

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

Redis, skrypty w języku Lua

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Programowanie obiektowe

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Paradygmaty programowania

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

ECDL Podstawy programowania Sylabus - wersja 1.0

Zmienne, stałe i operatory

Wykład 0 Informacje Podstawowe

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Programowanie komputerowe. Zajęcia 1

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

ALGORYTMY I STRUKTURY DANYCH

Podstawy programowania. Wykład 1 Wstęp. Krzysztof Banaś Podstawy programowania 1

Programowanie w Internecie. Java

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Wykład 7: Pakiety i Interfejsy

Technologie informacyjne - wykład 12 -

Praktyka Programowania

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

Podstawy i języki programowania

Informatyka I. dr inż. Andrzej Czerepicki.

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Wstęp do Informatyki

Język programowania PASCAL

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Java EE produkcja oprogramowania

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Transkrypt:

Programowanie i projektowanie obiektowe Wstęp Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 1 / 26

Plan wykładu 1 Wstęp komputery, algorytmy i programy 2 Podstawowe konstrukcje programistyczne 3 Procedury i funckje 4 Obiekty i metody 5 Struktury danych 6 Zarządzanie pamięcią 7 Rekurencja 8 Programowanie dynamiczne 9 Modelowanie dziedziny 10 Dziedziczenie 11 Klasy w Javie, kapsułkowanie, konstruktory 12 Wyjątki 13 Typy uogólnione 14 Kolekcje 15 Graficzny interfejs użytkownika P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 2 / 26

Algorytm Sposób postępowania prowadzący do pożądanego efektu. Przykłady: 1 Przepisy kucharskie 2 Zapis nutowy muzyki 3 Instrukcje montażu 4 Opis dojazdu P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 3 / 26

Instrukcja szamponu 1 Nałożyć szampon 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 4 / 26

Instrukcja szamponu 1 Nałożyć szampon ile?, na co? 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 4 / 26

Instrukcja szamponu 1 Nałożyć szampon ile?, na co? 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć skok do 1 P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 4 / 26

Instrukcja szamponu 1 Nałożyć szampon ile?, na co? 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć skok do 1 1 Nałożyć szampon 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 4 / 26

Instrukcja szamponu 1 Nałożyć szampon ile?, na co? 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć skok do 1 1 Nałożyć szampon 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć 1 Nałożyć szampon 2 Umyć włosy 3 Spłukać 4 Czynność powtórzyć P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 4 / 26

Największy wspólny dzielnik Dzielenie z resztą b = ax + r b a = x b mod a = r Podzielność Mówimy a dzieli b (a b) jeżeli istnieje liczba całkowita x, taka że b = ax. a b b mod a = 0 Największy wspólny dzielnik Największym wspólnym dzielnikiem a i b jest największa liczba która dzieli a i b. NWD(15, 18) = 3 NWD(7, 13) = 1 P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 5 / 26

Algorytm Euklidesa Pomysł a jeśli b = 0 NWD(a, b) = NWD(b, a) jeśli b > a NWD(a b, b) jeśli a b > 0 P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 6 / 26

Naiwna implementacja Pseudokod NWD(a, b) zakładamy, że a > b i a + b > 0 1 while b > 0 2 do a a b 3 if b > a 4 then swap(a, b) 5 return a Niska wydajność Dla a = 10 1 0 i b = 1 trzeba wykonać 10 1 0 odejmowań. P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 7 / 26

Poprawna implementacja Pseudokod NWD(a, b) zakładamy, że a > b i a + b > 0 1 while b > 0 2 do a a mod b 3 swap(a, b) 4 return a P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 8 / 26

Poprawność algorytmu Poprawność częściowa Jeżeli obliczenie się kończy, to dostajemy poprawny wynik. Przykład iseven(a) 1 while a 0 2 do a a 2 3 return true P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 9 / 26

Poprawność algorytmu Poprawność częściowa Jeżeli obliczenie się kończy, to dostajemy poprawny wynik. Przykład iseven(a) 1 while a 0 2 do a a 2 3 return true Poprawność pełna Dla dowolnych danych wejściowych obliczenie się kończy i dostajemy poprawny wynik. P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 9 / 26

Nie wszystko da się zaprogramować Problem STOPu Rozstrzygnąć czy program P zatrzymuje się dla dowolnych danych wejściowych. P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 10 / 26

Nie wszystko da się zaprogramować Problem STOPu Rozstrzygnąć czy program P zatrzymuje się dla dowolnych danych wejściowych. Nie istnieje algorytm rozwiązujący problem stopu. P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 10 / 26

Nie wszystko da się zaprogramować c.d. Dowód Załóżmy, że istnieje w pełni poprawny program S, który dla dowolnego programu P i danych D rozstrzyga, czy P uruchomiony na danych D zatrzymuje się. Weźmy program T : T(P) 1 if S(P, P) = true 2 then loop 3 else stop Jaki jest rezultat uruchomienia T (T )? P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 11 / 26

Jak działa komputer Procesor wczytuje rozkazy z pamięci i je wykonuje P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 12 / 26

Jak działa komputer Procesor wczytuje rozkazy z pamięci i je wykonuje Pamięć przechowuje programy i dane P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 12 / 26

Jak działa komputer Procesor wczytuje rozkazy z pamięci i je wykonuje Pamięć przechowuje programy i dane UWAGA: Programy i dane są traktowane tak samo P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 12 / 26

Jak działa komputer Procesor wczytuje rozkazy z pamięci i je wykonuje Pamięć przechowuje programy i dane UWAGA: Programy i dane są traktowane tak samo Szyna danych Łączy procesor, pamięć i inne elementy komputera P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 12 / 26

Jak działa komputer Procesor wczytuje rozkazy z pamięci i je wykonuje Pamięć przechowuje programy i dane UWAGA: Programy i dane są traktowane tak samo Szyna danych Łączy procesor, pamięć i inne elementy komputera Urządzenia wejścia/wyjścia procesor komunikuje się z nimi za pośrednictwem szyny danych i dodatkowych interfejsów P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 12 / 26

Kod maszynowy Postać binarna 10110000 01100001 P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 13 / 26

Kod maszynowy Postać binarna 10110000 01100001 Postać szestnastkowa B0 61 P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 13 / 26

Kod maszynowy Postać binarna 10110000 01100001 Postać szestnastkowa B0 61 Postać mnemoniczna MOV AL, 61h ; Load AL with 97 decimal (61 hex) P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 13 / 26

Kod maszynowy c.d. Fragment programu mov ax, 0D625h mov es, ax ; wprowadź do rejestru segmentowego ES wartość ; z AX wynoszącą D625 szesnastkowo ; (54821 dziesiętnie) mov al, 24 mov ah, 0 ; załaduj do rejestru AX wartość 24 ; (wyzeruj AH starszą połówkę rejestru AX ; i zapisz wartość 24 w młodszej AL) int 21h ; wywołaj przerwanie nr 33 (21 szesnastkowo) P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 14 / 26

Paradygmaty programowania 1 Programowanie imperatywne Program jest sekwencją instrukcji powodujących zmiany stanu (np. wartości zmiennych). P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 15 / 26

Paradygmaty programowania 1 Programowanie imperatywne Program jest sekwencją instrukcji powodujących zmiany stanu (np. wartości zmiennych). 2 Programowanie funkcyjne Brak skutków ubocznych, stan się nie zmienia. P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 15 / 26

Paradygmaty programowania 1 Programowanie imperatywne Program jest sekwencją instrukcji powodujących zmiany stanu (np. wartości zmiennych). 2 Programowanie funkcyjne Brak skutków ubocznych, stan się nie zmienia. 3 Programowanie deklaratywne Programista opisuje pożądany wynik bez precyzowania algorytmu. P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 15 / 26

Paradygmaty programowania 1 Programowanie imperatywne Program jest sekwencją instrukcji powodujących zmiany stanu (np. wartości zmiennych). 2 Programowanie funkcyjne Brak skutków ubocznych, stan się nie zmienia. 3 Programowanie deklaratywne Programista opisuje pożądany wynik bez precyzowania algorytmu. 4 Programowanie obiektowe Obiekty łączą w sobie dane (stan) i zachowanie (metody). P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 15 / 26

Język programowania 1 Składnia słowa i gramatyka 2 Semantyka znaczenie 3 Typy danych 4 Biblioteki standardowe P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 16 / 26

Kompilować, czy interpretować Języki kompilowane Kod źródłowy jest kompilowany do maszynowego. szybkie podatne na błędy trudno poprawiać zależne od platformy P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 17 / 26

Kompilować, czy interpretować Języki kompilowane Kod źródłowy jest kompilowany do maszynowego. szybkie podatne na błędy trudno poprawiać zależne od platformy Języki interpretowane Interpreter analizuje kod źródłowy w miarę wykonywania. mało wydajne wygodne niezależne od platformy P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 17 / 26

Kompilować, czy interpretować c.d. Java rozwiązanie pośrednie Kod źródłowy kompilowany do kodu bajtowego (bytecode) i wykonywany przez maszynę wirtualną. wydajne (niby) niezależne od platformy P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 18 / 26

Java - założenia 1 It should be simple, object-oriented and familiar. 2 It should be robust and secure. 3 It should be architecture-neutral and portable. 4 It should execute with high performance. 5 It should be interpreted, threaded, and dynamic. P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 19 / 26

Podstawowe konstrukcje Komentarze /* This is a multi-line comment. It may occupy more than one line. */ // This is an end-of-line comment Zmienne i przypisania int myint; myint = 35; int myint = 35; Uwaga = oznacza przypisanie == jest operatorem porównania /* Declaring an uninitialized variable called myint, of type int */ // Initializing the variable /* Declaring and initializing the variable at the same time */ P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 20 / 26

Podstawowe konstrukcje c.d. Instrukcja warunkowa if (i == 3) dosomething(); if (i == 2) dosomething(); else dosomethingelse(); if (i == 3) { dosomething(); } else if (i == 2) { dosomethingelse(); } else { dosomethingdifferent(); } P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 21 / 26

Podstawowe konstrukcje c.d. Pętla while (i < 10) { dosomething(); } // dosomething() is called at least once do { dosomething(); } P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 22 / 26

Podstawowe konstrukcje c.d. Wypisywanie wyniku System.out.println(s); // Display the string. Najprostszy program class Hello { public static void main(string[] args) { System.out.println("Hello World!"); } } P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 23 / 26

Integrated Development Environment (IDE) Zmiana hasła $ passwd NetBeans $ netbeans P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 24 / 26

Algorytm Euklidesa w Javie Szkielet programu do rozbudowania import java.util.scanner; public class Euclid { public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.println("Podaj pierwsza liczbe:"); int a = sc.nextint(); System.out.println("Podaj druga liczbe:"); int b = sc.nextint(); } } System.out.println("Wynik:"+Integer.toString(a) +"+"+In P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 25 / 26

Algorytm Euklidesa w Javie c.d. Operatory porównania == = < < <= > > >=!= Operatory arytmetyczne + + - * / % mod + oznacza również konkatenację łańcuchów znakowych. P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 26 / 26