Wykład 1: Wprowadzenie

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

Programowanie obiektowe - 1.

Programowanie obiektowe

Programowanie obiektowe

Podstawy Programowania Obiektowego

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

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

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

Zaawansowane programowanie w C++ (PCP)

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

Język programowania. Andrzej Bobyk

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

Technologie i usługi internetowe cz. 2

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

Klasy abstrakcyjne i interfejsy

Enkapsulacja, dziedziczenie, polimorfizm

Wykład 2: Podstawy Języka

Zaawansowane programowanie w C++ (PCP)

Modelowanie i Programowanie Obiektowe

Programowanie obiektowe. Wprowadzenie

Zaawansowane programowanie obiektowe - wykład 5

Dziedziczenie. dr Jarosław Skaruz

Programowanie obiektowe

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

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

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

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Analiza i projektowanie aplikacji Java

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

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

Wykład 4: Klasy i Metody

Wykład 6: Dziedziczenie

Programowanie obiektowe i zdarzeniowe

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

Wykład 8: klasy cz. 4

Programowanie obiektowe

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

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów.

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

Język Java część 2 (przykładowa aplikacja)

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji


TEMAT : KLASY DZIEDZICZENIE

Podstawy programowania. Wprowadzenie

Wprowadzenie do systemów informacyjnych

Technologie obiektowe

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Definiowanie własnych klas

Projektowanie obiektowe Wzorce projektowe

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

Programowanie obiektowe

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

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Programowanie obiektowe Object programming. Elektrotechnika II stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

Wstęp do programowania obiektowego. Wykład 2

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Wykład 9: Polimorfizm i klasy wirtualne

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Diagramy klas. dr Jarosław Skaruz

Język Java część 2 (przykładowa aplikacja)

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

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

Materiały do zajęć VII

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

UML w Visual Studio. Michał Ciećwierz

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Podstawy Programowania Programowanie Obiektowe

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

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

Kurs WWW. Paweł Rajba.

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

Historia modeli programowania

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

Spis treści. Wprowadzenie 15

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1

Polimorfizm. dr Jarosław Skaruz

Dziedziczenie. Tomasz Borzyszkowski

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie obiektowe

K_W04 K_W04 K_W04. Opis

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

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

Podstawy programowania

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Programowanie obiektowe

Wykład 7: Pakiety i Interfejsy

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

Podstawy Języka Java

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

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

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

Klasy abstrakcyjne, interfejsy i polimorfizm

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

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Języki i techniki programowania Ćwiczenia 2

Transkrypt:

Wykład 1: Wprowadzenie 1.wprowadzenie 2.podstawy języka 3.sterowanie 4.inicjacja i sprzątanie 5.kontrola dostępu 6.dziedziczenie 7.polimorfizm 8.obsługa błędów 9.kolekcje obiektów 10.wejście i wyjście 11.równoległość 12.interfejs graficzny 13.programy sieciowe 14.obsługa baz danych 15.obsługa serwerów

Wykład 1: Zagadnienia pojęcia programowanie obiektowego wprowadzenie do języka Java

Programowanie i Złożoność Złożoność problemów które potrafimy rozwiązać zależy od poziomu i jakości abstrakcji dostarczonej przez dany język. abstrakcja wykonawcza abstrakcja problemowa

Abstrakcja Wykonawcza Abstrakcja od szczegółów maszyny, która wykonuje program: asembler jest abstrakcją języka maszynowego języki imperatywne (Fortran, Basic, C) są abstrakcją języka asemblera

Assembler: Przykład mov 1,%i4 mov 2,%i3 cmp %i3,%i0 bge.l77006 sethi %hi(.l16+8),%o0 add %o0,%lo(.l16+8),%i5.ly1: add %i2,%i4,%i2 st %i2,[%i5] mov %i4,%i2 ld [%i5],%i4 inc %i3 cmp %i3,%i0 bl.ly1 Fragment kodu do obliczania ciągu liczb Fibonacciego.

C: Przykład unsigned * fibonacci(int n) { static unsigned fib_array[max_fib] = {0,1}; unsigned prev_number = 0; unsigned curr_number = 1; for (int i = 2; i < n; i++) { fib_array[i] = prev_number + curr_number; prev_number = curr_number; curr_number = fib_array[i]; } return(fib_array); }

Abstrakcja Wykonawcza modelowanie w kategorii maszyny, nie w kategorii problemu odwzorowania problemu na model maszyny wykonawczej jest sztuczne programy są trudne to napisania i kosztowne do pielęgnacji

Abstrakcja Problemowa Abstrakcja przez modelowanie problemu: LISP: problemy wyrażone listami PROLOG: problemy wyrażone przy pomocy reguł logicznych AWK: problemy przetwarzania plików tekstowych

LISP: Przykład (defun fib (n) (cond ((or (not (numberp n)) (< n 0)) (error "~s is not a legal value for n!~&" n)) )) ((eql n 0) 0) ;; base case ((eql n 1) 1) ;; base case (t (+ (fib (- n 1)) (fib (- n 2))))

PROLOG: Przykład fibonacci(0,0). fibonacci(1,1). fibonacci(n,a) :- N1 is N-1, N2 is N1-1, fibonacci(n1,a1), fibonacci(n2,a2), A is A1 + A2.

Abstrakcja Problemowa Każdy język jest odpowiedni dla pewnej (wąskiej) klasy problemów. Rozwiązywanie problemów spoza danej klasy jest nieefektywne.

Narzędzia Budowy Abstrakcji Programowanie obiektowe dostarcza narzędzi do reprezentacji elementów: w przestrzeni problemu w przestrzeni rozwiązań W obu przypadkach używamy obiektów jak podstawowej konstrukcji modelowania.

Modelowanie Obiektowe Pracownik staż urlopy naurlop() naszkolenie()... Tablica max wartosc inicjuj() wstaw() zwroc() przestrzeń problemu przestrzeń rozwiązania

Obiektowość i Adaptowalność Program obiektowy dostosowuje się do specyficznego języka danego problemu. Opisuje problem w kategoriach właściwych, a nie w kategoriach maszyny wykonującej. Abstrakcja nie ogranicza się do konkretnego rodzaju problemów.

Podejście Obiektowe 1.wszystko jest obiektem 2.program jest zbiorem obiektów które wysyłają sobie komunikaty 3.każdy obiekt posiada pamięć na którą składają się inne obiekty 4.każdy obiekt posiada swój typ 5.wszystkie obiekty tego samego typu mogą otrzymywać te same komunikaty

Stan, Zachowanie, Tożsamość Obiekt ma stan, zachowanie i tożsamość: stan dane wewnętrzne zachowanie zestaw metod do wykonania tożsamość każdy obiekt można w sposób jednoznaczny odróżnić od innych obiektów

Obiekty i Klasy Obiekty które są identyczne z wyjątkiem stanu są grupowane w klasy. Obiekty klasy mają tą samą: charakterystykę elementy składowe zachowanie operacje na stanie Różnią się wartością stanu, i tożsamością.

Abstrakcyjne Typy Danych Klasa definiuje abstrakcyjny typ danych. Te same możliwości jak typy podstawowe: tworzenie zmiennych typu (obiektów) manipulowanie zmiennymi Możliwość definiowania własnych typów (klas). Rozszerzenie języka.

Interfejs Obiektu Definicja klasy: interfejs i implementacja. Zarowka zapal() zgas() rozjasnij() przyciemnij() Interfejs ustala jakie żądania można wysyłać pod adresem obiektu.

Implementacja Obiektu Utworzenie obiektu klasy: Zarowka zr = new Zarowka(); Żądanie pod kierunkiem obiektu: zr.zapal(); Implementacja to kod umożliwiający wykonanie żądań przez obiekt.

Obiekt jako Usługodawca program dostarcza usług program składa się ze zbioru obiektów realizuje usługi wykorzystując usługi wykonywane przez składowe obiekty usługowy model ułatwia projektowanie, analizę i ponowne użytkowanie obiektów

Ukrywanie Implementacji Dwie grupy użytkowników: budowniczy aplikacji tworzenie aplikacji za pomocą gotowych klas budowniczy klas udostępnienie interfejsu klas to budowy aplikacji Implementacja pozostaje niewidoczna.

Zalety Ukrywania ochrona wewnętrznych operacji/danych przed ingerencją z zewnątrz szczegóły istotne i nieistotne wymiana implementacji klas bez wpływu na poprawność działania aplikacji

Kontrola Dostępu Trzy poziomy kontroli dostępu: public dostępne dla każdego private tylko twórca klasy protected dostęp mają tylko dana klasa i klasy dziedziczące

Budowa Klas Budowa na podstawie klas już istniejących: agregacja - stworzenie i użycie obiektu klasy w nowej klasie. dziedziczenie rozszerzenie klasy

Dziedziczenie Klonowanie klas: klasa bazowej (nad-klasa) modyfikacja i rozszerzenia klasa pochodna (podklasa) Typ bazowy: cechy typów pochodnych. Typ pochodny: cechy dodatkowe.

Przykład Dziedziczenia Figura narysuj() wymaz() przesun() Okrag Trojkat Kwadrat Z bazowej figury, wywodzimy różne figury konkretne.

Dziedziczenie: Dodawanie Figura narysuj() wymaz() przesun() Okrag Trojkat Kwadrat odwrocpoziomo() odwrocpionowo() Dodajemy do klasy potomnej nowe metody, często iteracyjnie.

Dziedziczenie: Przesłanianie Figura narysuj() wymaz() przesun() Okrag narysuj() wymaz() Trojkat Kwadrat odwrocpoziomo() odwrocpionowo() Przesłaniamy metody klasy bazowej przez nowe implementacje metod.

Zasada Zastępowalności Akceptujemy obiekty klasy bazowej - można użyć obiektów klasy pochodnej. Wymagana jest klasa potomna - obiekty klasy bazowej nie wystarczą. Wyjątek: dziedziczenie nie dodaje nowych metod (tylko przesłania).

Wymienialność Obiektów Obiekt jako reprezentant typu bazowego. Kod niezależny od konkretnego typu. Problem: kompilator nie może zdecydować jaki kod ma zostać wykonany.

Wczesne i Późne Wiązanie 1.Wczesne wiązanie: kompilator generuje wywołanie funkcji, program łączący zamienia nazwę na konkretny adres. 2.Późne wiązanie: kompilator upewnia się ze metoda istnieje, jednak kod jest dopiero ustalony w czasie wykonania.

Polimorfizm: Przykład Metoda działająca na dowolne figurze: void zrobcos(figura f) { f.wymaz();... f.narysuj() }

Polimorfizm: Przykład Tworzenie i użycie konkretnych figur: Okrag o = new Okrag(); Trojkat t = new Trojkat(); zrobcos(o); zrobcos(t); Działa bez względu na typ figury.

Rzutowanie w Górę Typ pochodny jako typ bazowy, dostosowanie do formy tego typu. Figura Okrag Trojkat

Klasy Abstrakcyjne nie posiada obiektów używana do definicji interfejsu dla klas z niej wywiedzionych

Metody Abstrakcyjne metoda nie została zaimplementowana jedynie wewnątrz klasy abstrakcyjnej dziedziczenie po klasie abstrakcyjnej: metoda abstrakcyjna musi zostać zaimplementowana klasa potomna jest abstrakcyjna

Interfejs Klasa gdzie zabronione jest definiowanie wszystkich funkcji. Możliwe wielokrotne dziedziczenie.

Podsumowanie Programowanie obiektowe to: enkapsulacja (klasy i obiekty) dziedziczenie polimorfizm Inne kwestie...

Metody Tworzenia Obiektów 1.Metoda statyczna Na stosie lub w obszarze statycznym. Metoda szybka, programista musi sam zwolnić pamięć. 2.Metody dynamiczna (Java!) Tworzenie dynamiczne obiektów na stercie. Ilość i czas życia obiektów nieznany do czasu wykonania.

Czas Życia Obiektów Metoda statyczna: kompilator wyznacza czas trwania obiektu, i sam go niszczy. Metodzie dynamicznej: czas nieznany. Java używa odśmiecacz pamięci, by wykrywać i usuwać obiekty nieużywane.

Kolekcje Obiektów Kolekcja (kontener) to obiekt który zawiera referencje do innych obiektów. Potrzebne gdy liczba potrzebnych obiektów nie jest zadana z góry. Biblioteka Java zawiera wiele kontenerów.

Iteratory Obiekt którego zadaniem jest wybieranie obiektów z kontenera i przekazywanie użytkownikowi. Pozwala na przechodzenie przez kontener bez względu na jego strukturę wewnętrzną. Możliwość podmieniania kontenera bez zakłócania kodu programu.

Wspólny Przodek 1.W Javie wszystkie obiekty dziedziczą po wspólnej klasie bazowej Object. 2.To gwarantuje że wszystkie obiekty posiadają pewne niezbędne funkcje, np. możliwość zapisu i odczytu obiektu z dysku. 3.Uproszcza też implementację odśmiecacza.

Rzutowanie w Dół Umieszczanie/odzyskanie obiektu z kontenera. Tracimy informacje o klasie. Rzutowanie: 1.w górę z klasy potomnej na bazową, bezpieczne. 2.w dół z klasy bazowej na potomną, niebezpieczne.

Odśmiecacz Pamięci Odśmiecacz pamięci: wykrywanie które obiekty sa nieużywane zwalnianie pamięci po tych obiektach Upraszcza problemy projektowe, zapobiega przeciekom pamięci. Cena: nieprzewidywalność czasu wykonania, przez działanie odśmiecacza.

Obsługa Wyjątków Obsługa błędów wymuszona przez język programowania: wyjątek jest obiektem sygnalizowany z miejsca błędu przechwytywany przez odpowiednią procedurę obsługi Alternatywna ścieżka sterowania programu, w przypadku wykrycia błędów.

Współbieżność wielowątkowość: kilka wykonań równoległych wielowątkowość jest częścią języka wątek jest obiektem blokowanie obiektów współdzielonych programowanie niezależne od faktycznej liczby procesorów

Trwałość obiekt istnieje tak długo jak go potrzebujemy, ale nigdy dłużej niż wykonanie programu obiekty trwałe są zapisywane, a następnie odczytywane z dysku obiekty trwałe przechowują wartość pomiędzy wykonaniami programu