Klasy i obiekty. Programowanie zorientowane obiektowo. Case study: Filmoteka Case study: Klasa Akademik



Podobne dokumenty
Klasy i obiekty. Programowanie zorientowane obiektowo. Case study: Filmoteka Case study: Klasa Akademik

Wprowadzenie do obiektowości

Wprowadzenie do obiektowości

Technologie i usługi internetowe cz. 2

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

Programowanie w Javie 1 Wykład i Ćwiczenia 2 Przegląd podstawowych klas w Javie (elementy programowania obiektowego) Płock, 16 października 2013 r.

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

Metody Metody, parametry, zwracanie wartości

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie - instrukcje sterujące

Dziedziczenie i interfejsy

Programowanie 3 - Funkcje, pliki i klasy

Liczby zespolone. x + 2 = 0.

Dodatkowo klasa powinna mieć destruktor zwalniający pamięć.

Programowanie strukturalne i obiektowe. Funkcje

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

Aplikacje w środowisku Java

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

Mechanizm dziedziczenia

Podstawy Programowania Obiektowego

Deklaracja i definicja metod, zwracanie wartości z metod, przekazywania parametrów do metod

Kilka prostych programów

Programowanie obiektowe

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

Klasy i obiekty cz II

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

TEMAT : KLASY DZIEDZICZENIE

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

Podstawy Języka Java

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Platforma.NET. Laboratorium nr 1 Podstawy języka C#

Obiektowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012

Wielomiany. dr Tadeusz Werbiński. Teoria

Programowanie obiektowe

Zadania z podstaw programowania obiektowego

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Programowanie komputerowe. Zajęcia 7

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

PODSTAWY AUTOMATYKI. MATLAB - komputerowe środowisko obliczeń naukowoinżynierskich - podstawowe operacje na liczbach i macierzach.

Języki i techniki programowania Ćwiczenia 2

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

4. Funkcje. Przykłady

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

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

Aplikacje w środowisku Java

Informatyka II. Laboratorium Aplikacja okienkowa

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

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

Dokumentacja do API Javy.

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

Informatyka I: Instrukcja 4.2

Uzasadnienie tezy. AB + CD = BC + AD 2

Podstawy programowania obiektowego

Języki programowania imperatywnego

Język ludzki kod maszynowy

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

I. Podstawy języka C powtórka

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

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Programowanie - wykład 4

C++ Przeładowanie operatorów i wzorce w klasach

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Programowanie obiektowe i zdarzeniowe

Definiowanie własnych klas

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

2. LICZBY RZECZYWISTE Własności liczb całkowitych Liczby rzeczywiste Procenty... 24

Programowanie komputerowe. Zajęcia 1

Wprowadzanie danych z klawiatury. Wyjątki związane z wprowadzaniem danych, przekroczeniem rozmiaru tablicy, dzieleniem przez zero itd.

Mechanizm dziedziczenia

Wykorzystanie programów komputerowych do obliczeń matematycznych, cz. 2/2

Programowanie, algorytmy i struktury danych

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Wstęp do Programowania, laboratorium 02

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

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

1 Definiowanie prostych klas

Ad maiora natus sum III nr projektu RPO /15

Konstrukcje warunkowe Pętle

Zaprojektować i zaimplementować algorytm realizujący następujące zadanie.

Zad. 3: Układ równań liniowych

Proste programy w C++ zadania

Wielomiany podstawowe wiadomości

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

Wprowadzenie do języka Java

Podstawy Programowania Podstawowa składnia języka C++

Czym są właściwości. Poprawne projektowanie klas

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Wykład 5: Klasy cz. 3

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

Algorytm. Krótka historia algorytmów

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Transkrypt:

Klasy i obiekty. Programowanie zorientowane obiektowo. Case study: Filmoteka Case study: Klasa Akademik

Dlaczego obiekty Załóżmy, że mamy napisać program o następującej specyfikacji: 1. Program wyświetla kwadrat, okrąg i trójkąt. 2. Gdy użytkownik kliknie na jakiś kształt tenże zaczyna świecić na niebiesko. 3. Jednocześnie odgrywana jest muzyczka w.mp3, specyficzna do każdego z kształtów.

Tak to ma wyglądać

Obiektowo vs. proceduralnie Proceduralnie Obiektowo Kwadrat Trójkąt /* odegraj dźwięk*/ Okrąg odtwórzdźwięk() { /* odegraj dźwięk*/ /* odegraj dźwięk*/

Ale życie płata figle Dodajemy nowy kształt: Dodamy nowy kształt, ale tenże będzie odgrywał muzyczkę.wav

Jak się kod zmieni Proceduralnie Zmieniamy przetestowany już kod i być może coś się zepsuje Obiektowo Kwadrat /* odegraj dźwięk mp3*/ Okrąg /* odegraj dźwięk mp3*/ Trójkąt /* odegraj dźwięk mp3*/ Dziwnokształtny /* odegraj plik.wav*/

Ale życie płata figle po raz drugi Kształt ma mieć inny kolor po kliknięciu: A do tego kolor ten ma być zmienny, podawany w parametrze i do tego gradientowy

No to czas na kolejną zmianę kodu Proceduralnie Zmieniamy przetestowany kod Kolejne if-y Obiektowo Kwadrat /* odegraj dźwięk mp3*/ Okrąg /* odegraj dźwięk mp3*/ Trójkąt /* odegraj dźwięk mp3*/ Dziwnokształtny kolor1; kolor2; z gradientem /* odegraj plik.wav*/

Hola, a gdzie przewaga OO? Kwadrat Okrąg Trójkąt Dziwnokształtny /* odegraj dźwięk mp3*/ /* odegraj dźwięk mp3*/ /* odegraj dźwięk mp3*/ kolor1; kolor2; z gradientem /* odegraj plik.wav*/

A tutaj: dziedziczenie Kwadrat Okrąg Trójkąt Dziwnokształtny Kształt /* odegraj dźwięk*/

A tutaj: dziedziczenie z przysłanianiem Kwadrat Okrąg Trójkąt Dziwnokształtny kolor1; kolor2; // tu będzie kod do zmiany koloru z gradientem /* odegraj plik.wav*/ Kształt /* odegraj dźwięk*/

Ogólna zasada pracy z obiektami i klasami Nazwa klasy To co obiekt wie To co obiekt potrafi Klasa będzie swoistym projektem obiektów tworzonych na jej podstawie. To co obiekt wie = atrybuty To co obiekt potrafi = metody

Pies To co obiekt wie Telewizor To co obiekt wie To co obiekt potrafi To co obiekt potrafi

Klasa vs. obiekt

Interesujący kurs programowania?

Pierwsza świadoma klasa

Druga świadoma klasa

Kilka ważnych rzeczy Programowanie zorientowane obiektowo pozwala na dodawanie funkcjonalności bez zmiany uprzednio przetestowanego kodu. Wszystko w Javie jest obiektem (znajduje się wewnątrz klasy) Klasa opisuje sposób na stworzenie obiektu danego typu. Taki schemat. Obiekt potrafi robić różne rzeczy. Niekoniecznie interesuje nas w jaki sposób to robi. Obiekt wie o niektórych rzeczach i robi specyficzne rzeczy Rzeczy które obiekt wie o sobie nazywane atrybutami. Reprezentują stan obiektu. Rzeczy które obiekt robi nazywane są metodami. Reprezentują zachowanie obiektu. Gdy tworzysz klasę, zwykle powinieneś też stworzyć oddzielną klasę do testowania w której stworzysz obiekty poprzedniej klasy. Klasa może dziedziczyć atrybuty i metody z superklas (bardziej ogólnych klas) Programy w Javie to po prostu gadanie obiektów do siebie

Ćwiczenia Napisz klasę realizującą rozwiązywanie równania kwadratowego. Klasa powinna posiadać pola prywatne A, B, C, reprezentujące współczynniki równania, wraz z odpowiednimi akcesorami i modyfikatorami. Dodatkowo należy stworzyć funkcję składową delta(), obliczającą wyróżnik trójmianu, oraz trzy funkcje obliczające miejsca zerowe. Klasa powinna być wyposażona w konstruktor domyślny oraz trójparametrowy konstruktor ogólny. Należy zastanowić się nad przypadkiem, gdy równanie staje się liniowym tzn. A = 0 i zaproponować rozwiązanie tego problemu.

Ciąg dalszy Obiekt stworzonej klasy może być wykorzystany następująco: RownanieKwadratowe r = new RownanieKwadratowe(); Scanner s = new Scanner(System.in) double num; System.out.println( Podaj A: ) S.nextDouble(num) r.ustawa( num ); //to samo dla B i C if( r.delta() > 0 ) S.O.P( "Pierwiastki rownania x1=" + r.obliczx1() + " x2=" + r.obliczx2()); else if(r.delta() = 0 ) S.O.P("Pierwiastek podwójny x12=" + r.obliczx12()); else S.O.P.("Brak pierwiastkow rzeczywistych ); Obiekty mogą być inicjowane następująco: RownanieKwadratowe r1 = new RownanieKwadratowe(); // Konstruktor inicjuje A=B=C=0; RownanieKwadratowe r2 = new RownanieKwadratowe(3,2,1); // Konstruktor inicjuje A=3,B=2,C=1;

Ćwiczenia Załóżmy, że gromadzimy wodę mineralną. Są trzy rodzaje butelek o pojemności 2l (duże), średnie o pojemności 1l oraz małe o pojemności 0.5 litra. Stworzyć klasę MyWater z metodami: void addlarge(int) dodaje do zapasu wody podaną jako argument liczbę dużych butelek. void addmedium(int) dodaje do zapasu wody podaną jako argument liczbę średnich butelek. void addsmall(int) dodaje do zapasu wody podaną jako argument liczbę małych butelek. Dodatkowo należy zaimplementować metody umożliwiające uzyskanie informacji o tym ile jest każdego rodzaju butelek, oraz jaka jest łączna pojemność zgromadzonej wody. Dostarczyć metod pozwalających uzyskiwać informacje o tych pojemnościach oraz je zmieniać. Klasę przetestować wyprowadzając dane na ekran: Mam teraz 6.5 litrów wody. Dużych butelek: 2 Małych butelek: 3 Średnich butelek: 1

Zadanie domowe Poczytaj o konstruktorach w Javie (np. http://rpodhajny.wordpress.com/2009/03/17/javakonstruktor/, ale nie tylko tutaj) Napisz własną klasę do obsługi liczb zespolonych. Każda taka liczba ma część rzeczywistą i urojoną Na liczbach można wykonywać operacje dodawania, odejmowania, mnożenia i dzielenia zgodnie z regułami matematyki Liczby należy ustawiać konstruktorem parametrowym Liczby można przypisywać między sobą za pomocą odpowiedniej metody Klasa powinna mieć zaimplementowane metody takie jak: getvalues() zwraca wartość części rzeczywistej i urojonej, getreal(), getimg() odpowiednio rzeczywistą i urojoną, itp.

Zadanie domowe 2 Napisz klasę Karta() reprezentującą karty do gry Karty mają swój kolor oraz figurę. Karta wie także czy jest słabsza, czy silniejsza od innych. Napisz przykładową grę w wojnę: Stworzysz talię 24 kart (od dziewiątek do asów w różnych kolorach; wykorzystaj do tego pętle, a nie rób tego ręcznie) Stworzysz tablicę tych kart. Komputer i Ty losujecie karty, wygrywa większa.

Zadanie domowe 2 // w tablicy talia mamy karty while(ktosniewygral) { //wylosuj bez zwracania kartę dla usera1 i usera2: Karta kartauser1 = talia[random]; Karta kartauser2 = talia[random]; if(kartauser1.bije(kartauser2)) user1score++ else if(kartauser2.bije(kartauser1)) user2score++

Zadanie domowe 3 Napisz klasę Wielomian() Klasa powinna być konstruowana za pomocą konstruktora parametrowego Wielomian(double[] wspolczynniki), np. Wielomian( {1,0,0,3,-5) reprezentuje wielomian: x 4 + 3x 5 Dopisz metody: void dodaj(wielomian inny) void przemnóż(double wartosc) int jakistopien() double[] pierwszapochodna() double wartosc(double x)

Zadanie domowe 4 Napisz klasę pomagającą w obliczeniach statystycznych: Statystyka() Metody: void dodajliczbe(double liczba) //dodaje liczbe do wewnętrznej tablicy liczb int ileliczb() double sumaliczb() double srednialiczb() double zwróćmin()

Zadanie domowe 5 Przejdź przez bardzo fajny tutorial na stronie Oracle: http://docs.oracle.com/javase/tutorial/java/javaoo/ind ex.html