Technologie i usługi internetowe cz. 2

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

Podstawy Języka Java

Podstawy Programowania Obiektowego

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.

Programowanie obiektowe - 1.

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

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

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

Enkapsulacja, dziedziczenie, polimorfizm

Do czego służą klasy?

Programowanie obiektowe

Programowanie obiektowe

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Język programowania. Andrzej Bobyk

Dziedziczenie. dr Jarosław Skaruz

Materiały do zajęć VII

Programowanie obiektowe

Definiowanie własnych klas

Java Język programowania

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

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

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

KLASY cz.1. Dorota Pylak

Polimorfizm. dr Jarosław Skaruz

Programowanie 2. Język C++. Wykład 3.

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Programowanie obiektowe

Mechanizm dziedziczenia

Do czego służą klasy?

Aplikacje w środowisku Java

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

Podstawy i języki programowania

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem.

Zaawansowane programowanie w języku C++ Programowanie obiektowe

TEMAT : KLASY DZIEDZICZENIE

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

Klasy abstrakcyjne, interfejsy i polimorfizm

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Programowanie obiektowe

Mechanizm dziedziczenia

Języki programowania imperatywnego

Dziedziczenie Dana jest klasa Punkt w pliku o nazwie Punkt.java:

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

Modelowanie i Programowanie Obiektowe

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Klasy i obiekty cz II

Programowanie obiektowe Wykład 7. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

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

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie obiektowe

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Programowanie obiektowe i zdarzeniowe

PHP 5 język obiektowy

Dziedziczenie. Zadanie 1

Programowanie obiektowe w języku

Technologie obiektowe

.NET Klasy, obiekty. ciąg dalszy

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

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

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

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

Dokumentacja do API Javy.

Języki programowania imperatywnego

Kurs WWW. Paweł Rajba.

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

hierarchie klas i wielodziedziczenie

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie, część I

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Laboratorium 6 DIAGRAM KLAS (Class Diagram)

Definiowanie własnych klas

Java SE Laboratorium nr 2. Temat: Obiektowość


Wykład 6: Dziedziczenie

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Oracle PL/SQL. Paweł Rajba.

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

Klasy cd. Struktury Interfejsy Wyjątki

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Zaawansowane programowanie w języku C++ Klasy w C++

Laboratorium 1 - Programowanie proceduralne i obiektowe

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

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

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

Programowanie, część I

Dziedziczenie. Tomasz Borzyszkowski

Programowanie obiektowe

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

Transkrypt:

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, w którym programy definiuje się za pomocą obiektów elementów łączących stan (czyli dane, nazywane najczęściej polami) i zachowanie (czyli procedury, w tym wypadku nazywane: metodami). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Podejście to różni się od tradycyjnego programowania proceduralnego, gdzie dane i procedury nie są ze sobą bezpośrednio związane. Programowanie obiektowe ma ułatwić pisanie, konserwację i wielokrotne użycie programów lub ich fragmentów. 2

Czym jest obiekt w programowaniu obiektowym? Programowanie obiektowe jak sama nazwa wskazuje posługuje się obiektami. Obiekty charakteryzują się: atrybutami (cechami, stanami, pola), operacjami, które można na nich wykonać (usługami, poleceniami, metodami). Na przykład jeśli obiektem jest samochód to atrybutami mogą być: producent, cieżar, maksymalna prędkość jazdy. Natomiast, operacjami jakie można wykonywać na tym obiekcie mogą być: pobierz producenta, pobierz ciężar, ustaw prędkość maksymalną. 3

Czym jest klasa w programowaniu obiektowym? Informację o atrybutach danego obiektu oraz o operacjach które można na nim wykonać czerpiemy z definicji klasy odpowiadającej danemu obiektowi. Taką klasę samochodów nasz program musi albo skądś pobrać albo sam dostarczyć. Klasa - to zestaw atrybutów i operacji grupy podobnych obiektów, które są dla nich niezmienne. 4

Realizacja klasy Samochod w Javie public class Samochod { String producent; int ciezar; int maksymalnapredkoscjazdy; public String getproducent() { return producent; public void setproducent(string producent) { this.producent = producent; public int getciezar() { return ciezar; public void setciezar(int ciezar) { this.ciezar = ciezar; public int getmaksymalnapredkoscjazdy() { return maksymalnapredkoscjazdy; public void setmaksymalnapredkoscjazdy(int maksymalnapredkoscjazdy) { this.maksymalnapredkoscjazdy = maksymalnapredkoscjazdy; 5

Tworzenie obiektu, konstruktory i destruktory Konstruktor to specjalna metoda umożliwiająca tworzenie obiektów. Konstruktor domyślny: new Samochod(); lub Samochod sam = new Samochod(); Konstruktor ustawiający wartości pól: public Samochod(String producentn, int ciezarn, int maksymalnapredkoscjazdyn) { producent = producentn; ciezar = ciezarn; maksymalnapredkoscjazdy = maksymalnapredkoscjazdyn; Destruktor to specjalna metoda umożliwiająca niszczenie obiektów. W Javie nie ma destruktorów. Jest za to mechanizm Garbage Collector 6

Główne cechy programowania obiektowego Abstrakcja Enkapsulacja Dziedziczenie Polimorfizm 7

Abstrakcja Każdy obiekt w programie (definiowany za pomocą abstrakcyjnego typu jakim jest klasa) służy jako model abstrakcyjnego "wykonawcy", który może wykonywać pracę, opisywać i zmieniać swój stan oraz komunikować się z innymi obiektami w systemie bez ujawniania, w jaki sposób zaimplementowane są jego cechy. 8

Klasa Punkt2D class Punkt2D { int x,y; Punkt2D(int x, int y) { this.x = x; this.y = y; 9

Ćwiczenie 1 1. Dopisz metody, które będą pobierać współrzędne x i y punktu. 2. Dopisz metody, które ustawią współrzędne x i y punktu na określoną wartość. 3. Dopisz metodę liczbawspolrzednych(), która pobierze liczbę współrzędnych punktu. 4. Przedefiniuj metodę tostring() tak aby wypisywała reprezentację punktu. 10

Enkapsulacja (hermetyzacja) Enkapsulacja (hermetyzacja) to ukrywanie implementacji. Zapewnia, że obiekt nie może zmieniać stanu wewnętrznego innych obiektów w nieoczekiwany sposób. Tylko własne metody obiektu są uprawnione do zmiany jego stanu. Każdy typ obiektu prezentuje innym obiektom swój interfejs, który określa dopuszczalne metody współpracy. W Javie klasycznie mamy cztery modyfikatory dostępu: private - do danych można się dostać tylko z wnętrza danej klasy public dane są ogólnie dostępne protected do danych można się dostać z wnętrza danej klasy, klas pochodnych i z klas tego samego pakietu package do danych można się dostać w obrębie tego samego pakietu 11

Ćwiczenie 2 1. Przerób klasę Punkt2D zachowując koncepcję enkapsulacji pól i metod. 2. Utwórz w klasie Punkt2D pole statyczne liczbapunktow które będzie zliczać liczbę utworzonych punktów w programie. 3. Utwórz w klasie Punkt2D metodę odlegloscodzera(), która wyznaczy odległość punktu od zera. 12

Dziedziczenie Dziedziczeniem (z ang. inheritance) w programowaniu obiektowym nazywamy mechanizm współdzielenia funkcjonalności pomiędzy klasami. Klasa może dziedziczyć po innej klasie, co oznacza, że oprócz swoich własnych atrybutów oraz zachowań, uzyskuje także te pochodzące z klasy, z której dziedziczy. Klasa dziedzicząca jest nazywana klasą pochodną lub potomną (z ang. subclass), klasa, z której następuje dziedziczenie jest nazywana klasą bazową (z ang. superclass). 13

Klasa Punkt3D (klasa rozszerzająca Punkt2D) public class Punkt3D extends Punkt2D{ private int z; public Punkt3D(int x, int y, int z) { super(x,y); this.z=z; public int getz() { return z; public void setz(int z) { this.z = z; 14

Ćwiczenie 3 1. Przerób w klasie Punkt3D metodę liczbawspolrzednych() tak aby działała prawidłowo. 2. Przerób w klasie Punkt3D metodę tostring() aby prawidłowo zwracała reprezentację obiektu. 3. Przerób w klasie Punkt3D metodę odlegloscodzera(), która poprawnie wyznaczy odległość punktu od zera. 15

Polimorfizm Polimorfizm w programowaniu obiektowym to cecha dzięki której jedna metoda (o tej samej nazwie) może być stosowana do wykonania różnych zadań w zależności od tego na rzecz którego obiektu została wywołana. 16

Ćwiczenie 4 Tworzymy tablicę 10 elementową do przechowywania obiektów typu Punkt2D. Punkt2D[] tabpunktow = new Punkt2D[10]; W pętli dla i=1..10 losujemy liczbę p z przedziału [0,1]. Jeśli liczba p jest mniejsza od ½ to tworzymy obiekt typu Punkt2D(x,y), gdzie x pierwsza cyfra po przecinku liczby p, y druga cyfra po przecinku liczby p, jeśli z kolei liczba p jest większa równa od ½ to wówczas tworzymy obiekt typu Punkt3D(x,y,z), gdzie x pierwsza cyfra po przecinku liczby p, y druga cyfra po przecinku liczby p, z trzecia cyfra po przecinku liczby p. Wyświetl w pętli od 1..10 informację o liczbie współrzędnych każdego z utworzonych obiektów. Zauważ, że nie wiedząc czy na przykład pod tabpunktów[4] znajduje się obiekt typu Punkt2D czy Punkt3D program poprawnie wyświetla 2 lub 3 (to jest zaleta polimorfizmu właśnie.) 17

Zadanie domowe 3 Dopisz w klasie Punkt2D metodę public double odl(punkt a){ która obliczy odległość dwóch punktów: Punkt2D p1 = new Point2D(2,1); Punkt2D p2 = new Point2D(1,2); p1.odl(p2); Napisz teraz metodę boolean czytrojkat(p1,p2,p3) która sprawdzi, czy punkty p1, p2 i p3 są wierzchołkami trójkąta. 18

Dziękuję za uwagę 19