PGO Interfejsy Michail Mokkas.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Programowanie obiektowe
Klasy abstrakcyjne i interfejsy
Programowanie obiektowe
Wzorce.
Static, const, volatile.
Generics w .NET 2.0 Łukasz Rzeszot.
Implementacja ekstensji klasy
Programowanie Obiektowe w Javie (c.d.)
Nguyen Hung Son Uniwersytet Warszawski
Programowanie obiektowe w Javie
Serwery Aplikacji ASP .NET Web Objects Arkadiusz Popa.
RMI I RMI-IIOP Wprowadzenie Co to jest RMI?
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
C++ wykład 2 ( ) Klasy i obiekty.
Zaawansowane technologie Javy Wykład 1 (26 lutego 2013)
Zasady zaliczenia Warunki uzyskania zaliczenia:
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.

Język Java Wielowątkowość.
Serializacja Serializacja pozwala zamienić obiekt na sekwencję bajtów, w sposób umożliwiający później wierne odtworzenie jego zawartości Inna nazwa to.
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
W większości języków programowania biblioteki wejścia/wyjścia ukrywają szczegóły obsługi poszczególnych mediów pod abstrakcją strumienia (ang. stream).
Tworzenie aplikacji mobilnych
Programowanie obiektowe – zastosowanie języka Java SE
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład IX.
Programowanie obiektowe III rok EiT
WPROWADZENIE W ŚWIAT OBIEKTÓW
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
INTERFEJSY I KLASY WEWNĘTRZNE
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Warsztaty C# Część 6 Grzegorz Piotrowski Grupa .NET PO
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
Programowanie w języku C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Zintegrowany sterownik przycisków. Informacje podstawowe Każdy przycisk jest podłączony do sterownika za pośrednictwem dwóch przewodów, oraz dwóch linii.
Programowanie strukturalne i obiektowe C++
Diagram klas Kluczowymi elementami są: klasy (class)
Kurs języka C++ – wykład 4 ( )
PROGRAMOWANIE W JAVA Informatyka Stosowana – ROK II / III Laboratoria mgr inż. Krzysztof Bzowski.
Paweł Starzyk Obiektowe metody projektowania systemów
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Wzorce Projektowe w JAVA
Łukasz Bieszczad Mateusz Gałązka Karol Włodarek
Programowanie Zaawansowane
Statyczna kontrola typów w SBQL Rafał Hryniów Polsko-Japońska Wyższa Szkoła Technik Komputerowych, Warszawa
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Podstawowe konstrukcje języka Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin.
Programowanie Obiektowe – Wykład 6
Typy wyliczeniowe, kolekcje
Wątki, programowanie współbieżne
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
(c) Krzysztof Barteczko 2014
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
Klasy wewnętrzne. Praktyka użycia interfejsów i klas wewnętrznych
Programowanie obiektowe – zastosowanie języka Java SE
Wprowadzenie do programowania obiektowego
PGO - Projektowanie i implementacja pierwszych klas
PGO Dziedziczenie Michail Mokkas.
PGO Przeciążanie metod i konstruktorów
PGO Porównywanie obiektów
Zapis prezentacji:

PGO Interfejsy Michail Mokkas

Spis treści Interfejs Klasa abstrakcyjna a Interfejs Interfejs w Javie Interfejs jako typ Interfejsy i aktualizacja oprogramowania Metody domyślne Zapis obiektu do pliku Odczyt obiektu z pliku Zadania

Interfejs Interfejsy stanowią wspólny środek komunikacji dla niepowiązanych obiektów. Można o tym pomyśleć jako swojego rodzaju kontrakt, który umożliwia dwóm stronom niezależną rozbudowę lub zmiany. Kontrakt ten zobowiązuje także klasy dziedziczące/implementujące dany interfejs o dostarczenie ciała (implementacji) wszystkich metod zdefiniowanych w interfejsie. Interfejsy wyznaczają obowiązkowe metody, a klasy (implementujące je) dostarczają ich implementację.

Klasa abstrakcyjna a Interfejs zmienne dozwolone jedynie stałe (static final) metody abstrakcyjne, statyczne lub domyślne konstruktor dozwolony brak tworzenie obiektu niemożliwe modyfikatory dostępu wszystkie tylko public Implementowane za pomocą słowa kluczowego extends implements rozszerza wyłącznie i tylko jedną klasę wiele interfejsów implementuje pisana w osobnym pliku .java tak

Interfejs w Javie Definiowanie:

Interfejs w Javie kont. 1 Dziedziczenie:

Interfejs jako typ Poprzez definiowanie nowego interfejsu, definiujemy także nowy typ danych. Umożliwia to tworzenie zmiennych o typie interfejsu. Obiekty przypisane do typu danego interfejsu muszą być instancją klasy, która implementuje ten interfejs.

Interfejs jako typ (przykład)

Interfejsy i aktualizacja oprogramowania Interfejsy stosowane są często jako część API (Application Programming Interface). Każda zmiana (np. dodanie nowej metody) interfejsu, który jest używany przez inne klasy spowoduje, że nie będą już działać poprawnie. Rozwiązanie tego problemu stanowi utworzenie nowego interfejsu, który będzie rozszerzał stary. Nowe oprogramowanie/klasy mogą wybrać, który interfejs będą implementować. Alternatywą jest użycie metod domyślnych.

Metody domyślne (default) Przykład: Interfejs Controlable definiuje, jakie metody powinien posiadać pilot do telewizora. Klasa OldRemote reprezentuje pilot telewizora z wbudowanym odtwarzaczem kaset VHS. Klasa NewRemote reprezentuje zaś pilot telewizora z wbudowanymi odtwarzaczami zarówno kaset VHS, jak i płyt DVD. Ponieważ nowe telewizory umożliwiają odtwarzanie płyt DVD, uaktualniamy nasz interfejs o tę funkcjonalność. Aby klasa OldRemote dalej działała bez potrzeby jej zmiany (dodanie implementacji metody playDVD), ustawiamy nowo stworzoną metodę jako domyślną wraz z jej implementacją z poziomu samego interfejsu.

Metody domyślne (default) kont. 1

Zapis obiektu do pliku Aby obiekt klasy był możliwy do zapisu w pliku, musi implementować interfejs Serializable. Pozwala on na zachowanie aktualnego stanu obiektu. Dla klasy Person, ze zmiennymi name i surname oraz konstruktorem Person(String, String) zapis jej obiektów wygląda w następujący sposób:

Odczyt obiektu z pliku

Zadanie E1 Stwórz klasę reprezentującą łódź podwodną (Submarine) implementującą interfejs nawigacji (Navigation). Klasa łodzi podwodnej powinna posiadać następujące zmienne: serial_number (int, long lub String) //numer seryjny fuel_type (String) //napęd armature (String[]) //uzbrojenie Interfejs nawigacji powinien posiadać metody: void submerge(int degree) //zanurzenie void rise(int degree) //wynurzenie void turnLeft(int degree) //obrót w lewo void turnRight(int degree) //obrót w prawo

Zadanie E2 Do klasy poprzedniego zadania (łódź podwodna), dodaj implementowanie interfejsu Sonar z metodami: void turnOn() void turnOff() int sendSignal(int number_of_repeats) void displayScan () Jako implementacja metod wystarczy System.out.println(“Sonar włączony.”); itp.

Zadanie E3 Do poprzedniego interfejsu (nawigacja) dodaj metody void autopilot(), void callForHelp() oraz boolean isDamaged() nie przerabiając w żaden sposób klasy Submarine. Klasa Submarine powinna dalej współgrać z interfejsem nawigacji bez potrzeby implementowania nowych metod.

Zadanie E4 Korzystając z interfejsu Serializable, dodaj możliwość zapisu i odczytu obiektu łodzi podwodnej do/z pliku.