Java 05 Klasy

background image

Java

Podstawy

Klasy

Michał Bereta

www.michalbereta.pl

mbereta@pk.edu.pl

background image

Klasy

Klasa
• Jest “przepisem” na tworzenie obiektów, które

mają:

– stan
– zachowania
– mogą komunikowad się ze sobą

• Definiuje nowy typ

background image

Klasy

Najważniejsze pojęcia obiektowości:
- Kompozycja (agregacja)
- Enkapsulacja (hermetyzacja)
- Dziedziczenie
- Polimorfizm

background image

Klasy

background image

Klasy

Każda publiczna klasa musi znajdowad się w
pliku o nazwie identycznej z nazwą klasy.

background image

Klasy

unikalna referencja do obiektu

background image

Klasy

Każdy obiekt przechowuje swój stan.

Osoba wie jakie ma imię i nazwisko.

background image

Klasy

background image

Klasy

Ktoś może zmienid nazwisko danej osoby!

background image

Klasy

Enkapsulacja (hermetyzacja)
• Stan obiektu powinien byd jego prywatną

sprawą

• Obiekt udostępnia publiczne metody do

operowania na sobie

background image

Klasy

background image

Klasy

Możemy zmienid imię znajomego, ale nie jego nazwisko!

background image

Klasy

Pola "imie" oraz "nazwisko" są teraz
prywatne.

Jedynie sam obiekt ma do nich dostęp
w swoich metodach.

background image

Klasy

Konstruktor pozwala stworzyd obiekt na
podstawie przekazanych argumentów.

Konstruktor to specjalna metoda, która ma
taką samą nazwę jak klasa.

background image

Klasy

Klasa może posiadad kilka konstruktorów
różniących się listą argumentów.

background image

Klasy

Błąd! Nie mamy dostępu do prywatnych
stanów obiektów.

background image

Klasy

Należy użyd publicznych metod dostępu.

background image

Klasy

background image

Klasy

• Metody

background image

Klasy

• Metody

background image

Klasy

• Metody

w klasie Osoba

w main

background image

Klasy

• Kompozycja

– Obiekty mogą posiadad referencje do innych

obiektów (nawet tego samego typu)

background image

Klasy

w klasie Osoba

w main

background image

Klasy

w main

background image

Klasy

• Dziedziczenie

background image

Klasy

Pracownik jest osobą …

background image

Klasy

Pracownik jest osobą, która oprócz imienia i
nazwiska ma swój numer pracownika.

background image

Klasy

Pracownik DZIEDZICZY imię i nazwisko z klasy
Osoba, ale nie ma do nich dostępu gdyż są one
prywatne w klasie Osoba. Można to zmienid
zmieniając specyfikator dostępu z private na
protected - wtedy imię i nazwisko są prywatne
dla wszystkich ale nie dla klas dziedziczących z
danej klasy.

background image

Klasy

Pracownik jest osobą, która oprócz imienia i
nazwisko na swój numer pracownika.

Brak odpowiedniego konstruktora. Podczas
tworzenia pracownika, musi byd utworzony
obiekt typu Osoba.

background image

Klasy

Wywołanie konstruktora
klasy macierzystej (bazowej)

background image

Klasy

Błąd! Wywołanie konstruktora klasy
macierzystej (bazowej) - musi byd wykonane
jako pierwsza operacja.

background image

Klasy

Wywołanie konstruktora klasy macierzystej
(bazowej) - nie może byd pominięte, jeśli klasa
Osoba nie ma konstruktora domyślnego (bez
argumentów), np. :

background image

Klasy

Metoda "przedstawSwojaOsobe" jest dostępna
w klasie Pracownik, gdyż została odziedziczona
z klasy Osoba.

background image

Klasy

• Polimorfizm – wywołanie metody (zachownaie

obiektu) zależy od jego prawdziwego typu,
nawet jeśli w danym miejscu programu w
czasie kompilacji nie jest znany jego dokładny
typ.

background image

Klasy

Metoda nadpisana (przeciążona) w klasie
Pracownik.

background image

Klasy

background image

Klasy

Pracownik JEST Osobą, więc obiekt Pracownik
może byd wskazywany przez referencję typu
Osoba.

background image

Klasy

Wygenerowana osoba nie jest znana aż do
uruchomienia programu ...

background image

Klasy

Wygenerowana osoba nie jest znana aż do
uruchomienia programu, mimo to za każdym
razem, dzięki polimorfizmowi, wywoływana
jest odpowiednia metoda
"przedstawSwojaOsobe".

czasami :

a czasami :

background image

Klasy

operator instanceof

background image

Klasy

operator instanceof

background image

Klasy

Zadanie

Stwórz klasę Silnik. Każdy obiekt typu Silnik ma daną moc ustawianą przez
wartośd przekazaną w konstruktorze. Nie można zmienid mocy silnik po jego
utworzeniu, ale można dowiedzied się od obiektu Silnik jaka jest jego moc.

Dodaj klasę Kierownica, która może mied dany kolor.

Dodaj klasę Koło, które może byd zimowe lub letnie.

Następnie stwórz klasę Samochod. Każdy samochód ma silnik o danej mocy,
cztery koła (zimowe lub letnie) i kierownicę o zadanym kolorze.

Zaprojektuj klasę Samochod tak, by można było zmieniad w nim każdą oponę z
osobna oraz wyświetlid informację o każdej z nich.

background image

Klasy

Zadanie

W nowym projekcie stwórz klasę Zwierze. Każde zwierzę ma swoje imię i umie wydad z
siebie odgłos charakterystyczny dla swego gatunku. Dodaj klasy Pies, Kot oraz Kon
dziedziczące z klasy Zwierze. Zademonstruj działanie polimorfizmu przez
implementację w każdej z tej klas właściwego sposobu wydawanie dźwięku.


Wyszukiwarka

Podobne podstrony:
Java 05 Klasy(1)
notatki java 05
JAVA 09 klasy i obiekty(2)
JAVA 05 operatory
java 05
Java 06 Klasy Interfejsy
notatki java 05
JAVA 09 klasy i obiekty(2)
java 05
r12-05, Programowanie, ! Java, Java Server Programming
Java praca domowa 05
r20-05, Programowanie, ! Java, Java Server Programming
05 WeWy, wisisz, wydzial informatyki, studia zaoczne inzynierskie, jezyk java
O Autorach-05, Programowanie, ! Java, Java Server Programming
r05-05, Programowanie, ! Java, Java Server Programming

więcej podobnych podstron