• Nie Znaleziono Wyników

interfejsów Wielodziedziczenie klas a

N/A
N/A
Protected

Academic year: 2021

Share "interfejsów Wielodziedziczenie klas a"

Copied!
16
0
0

Pełen tekst

(1)

Wielodziedziczenie klas a interfejsów

Piotr Laskowski, Winicjusz Szyszka

(2)

Plan

 Czym jest wielodziedziczenie?

 Wielodziedziczenie klas – teoria i praktyka

 Interfejsy – teoria i praktyka

 Wady tych rozwiązań

 Co lepsze i dlaczego?

(3)

WIELODZIEDZICZENIE

 Cóż to takiego?

 Wielodziedziczenie klas (C++, Perl, Python)

 Interfejsy (Java, PHP, C#)

(4)

Wielodziedziczenie klas

 Jedno dziecko wiele matek

 Prostota i szybkość tworzenia

 Intuicyjność

 Łatwe zmiany

 Zobaczmy jak to wygląda w praktyce

(5)

Praktyka

(6)

Interfejsy

 Inny rodzaj dziedziczenia

 Pełna enkapsulacja

 Wygoda

(7)

Praktyka

 package java.util;

public class ArrayList<E>

extends AbstractList<E>

implements List<E>, RandomAccess,

Cloneable, Serializable

(8)

Praktyka

class ObjectListHandler extends Object implements ActionListener, ListSelectionListener {

void actionPerformed(ActionEvent e) { // zaznaczenie checkbox-a

this.isOptionEnabled != this.isOptionEnabled;

this.showHideList(this.isOptionEnabled);

}

void valueChanged(ListSelectionEvent e) { // zmiana zaznaczenia listy

if(this.isOptionEnabled) this.refilterObjects();

} ...

}

(9)

Praktyka

class VideoList extends AbstractListModel implements TableModel, ListModel { private List<Video> source;

public VideoList(List<Video> source) { this.source = source;

}

public Object getElementAt(int i) { // for ListModel return source[i].getTitle();

}

public Object getValueAt(int i, int j) { // for TableModel Video obj = source[i];

switch(j) {

case 0: return obj.getTitle();

case 1: return obj.getThumb();

case 2: return obj.getAuthor();

case 3: return obj.getDate();

} } }

(10)

Praktyka

package javax.swing;

interface SwingConstants { static int BOTTOM;

static int CENTER;

static int EAST;

static int HORIZONTAL;

static int LEADING;

static int LEFT;

static int NEXT;

...

}

(11)

Nic nie jest idealne, nawet interfejsy

 Pracochłonność przy tworzeniu

 Pracochlonnośc przy zmianach

 Kolizje nazw

(12)

Wielodziedziczenie klas jest gorsze!

 Niejednoznaczność

 Diamond problem

 Dużo błędów (potencjalnie)

(13)

Diamond problem

(14)

Klasy > Interfejsy

 Łatwość tworzenia i intuicyjność

 Szybkość wprowadzania zmian

(15)

Interfejsy > Klasy

 Większa przejrzystość

 Swoboda implementacji

 Większa modularność/niezależność

(16)

Czas na podsumowanie

Cytaty

Powiązane dokumenty

Logo może występować w formie słowa, litery lub w formie graficznej (obraz), ale także może być połączeniem liter i obrazu.. Przeczytajcie opracowanie z e-podręcznika i

Do rzemiosła artystycznego zalicza się m.in.: kowalstwo artystyczne, meblarstwo, ceramikę artystyczną, szkło artystyczne, złotnictwo, jubilerstwo, tkactwo, hafciarstwo,

[ Wytwarzanie przedmiotów (zarówno wykonywanych ręcznie, w niewielkim nakładzie, jak i przemysłowo, na dużą skalę) posiadających walory artystyczne, określamy mianem

-projektant wnętrz musi mieć wiedzę z zakresu nauk technicznych, architektury, czy urbanistyki oraz szeroką wiedzę dotycząca różnych dziedzin sztuki, jak również wiedzę

Wierzono, że można cieszyć się życiem wiecznym, jeżeli po śmierci ciało nie ulegnie zniszczeniu, dlatego zabezpieczano je za pomocą różnych środków.. Zabiegi takie nazywa

Wydaje się, że to trochę problematyczne – zaraz przecież znajdzie się ktoś, kto powie, że nawet największy kicz akurat dla niego jest dziełem sztuki, no i koniec dyskusji

Jego alternatywą stał się styl rokokowy, wykształcony we Francji i szczególnie popularny za czasów Ludwika XV, stąd też często nazywany jest on właśnie stylem Ludwika XV..

Po śmierci Aleksandra III tradycję kontynuował jego syn i następca car Mikołaj II, który co rok zamawiał dwa jaja Fabergé, jedno dla swojej żony cesarzowej Aleksandry