Implementacja ekstensji klasy
This presentation is the property of its rightful owner.
Sponsored Links
1 / 15

Implementacja ekstensji klasy PowerPoint PPT Presentation


  • 86 Views
  • Uploaded on
  • Presentation posted in: General

Implementacja ekstensji klasy. Małachowska Anna, Karwowski Piotr, gr. 622. Plan prezentacji:. Drobne przypomnienie teorii ;-) Implementacja ekstensji klasy: i) przy użyciu tablicy statycznej ii) przy użyciu kolekcji a) lista (list) b) mapa (map) c) zbiór (set)

Download Presentation

Implementacja ekstensji klasy

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Implementacja ekstensji klasy

Implementacja ekstensji klasy

Małachowska Anna, Karwowski Piotr, gr. 622


Plan prezentacji

Plan prezentacji:

Drobne przypomnienie teorii ;-)

Implementacja ekstensji klasy:

i) przy użyciu tablicy statycznej

ii) przy użyciu kolekcji

a) lista (list)

b) mapa (map)

c) zbiór (set)

iii) w postaci wystąpienia odrębnej klasy

Dodatki :)

a) implementacja metod obiektowych i klasowych

Zadania do rozwiązania


1 drobne przypomnienie teorii

1 Drobne przypomnienie teorii

Ekstensja klasy (class extent) - aktualny (zmienny w czasie!) zestaw wszystkich wystąpień (instancji) tej klasy.WAŻNE: jest to zbiór wszystkich wystąpień danej klasy (bezpośrednich i pośrednich), ALE obcięty do atrybutów wyspecyfikowanych w tej klasie.Dlaczego zbiór ekstensji zawiera także wystąpienia pośrednie? Ponieważ obiekt jest wystąpieniem bezpośrednim swojej klasy ale i wystąpieniem pośrednim wszystkich jej nadklas.

W implementacji, ekstensja jest specjalną strukturą danych dołączoną do klasy. Ta struktura przechowuje wszystkie obiekty będące członkami danej klasy.

Przykład obrazkowy dla osób

oglądających tylko rysunki :)

PRACOWNIK

NAZWISKO

ROK_UK

ZAROBEK

DZIAŁ

:PRACOWNIKNAZWISKO=Kluska

ROK_UR=1970

ZAROBEK=2500

DZIAŁ=handlowy

:PRACOWNIKNAZWISKO=Wałek

ROK_UR=1976

ZAROBEK=2800

DZIAŁ=marketing

klasa

instancja klasy

instancja klasy

zbiór instancji = ekstensja klasy


2 implementacja i tablica stat

2 Implementacja (i - tablica stat.)

Zalety:

Całkiem prosta implementacja

Łatwy i szybki dostęp do dowolnego elementu tablicy

Wydajność

Wady:

Stały, niezmienny rozmiar

Mało efektywne rozwiązanie od strony usuwania elementów

Brak zaimplementowanych użytecznych metod (wstawianie, usuwanie, przesuwanie... itp)

Obsługa narzuconego typu danych (np. nie można umieścić w tablicy dowolnych obiektów)

Listing implementacja przy użyciu tablicy statycznej – KLIKNIJ TUTAJ.

Skrócony przykład implementacji:

class Pracownik {// klasa pracownik

String imie;// i jej atrybuty

String nazwisko;

int pensja;

int id_pracownika;

public static void main(String args[]) {}

static Pracownik pracownicy[] = new

Pracownik[100];// tablica stat.

static int index = 0;// wskaźnik

static final int max = 100; // rozmiar tab.

public Pracownik(String imie, String

nazwisko, int pensja) {

this.imie = imie;

this.nazwisko = nazwisko;

this.pensja = pensja;

if(index<max) {

pracownicy[index] = this;// wstaw do tablicy

index++;

}

}

// przykład realizacji usuwania

public static void usunPracownika (int id_pracownika){

// znajdź pracownika po id (pętla for)

// zastąp pracownika ostatnim pracownikiem w tabeli

// lub wartością NULL jeśli tylko 1 prac. w tab.

}


2 implementacja ii kolekcje wst p

2 Implementacja (ii - kolekcje - wstęp)

Co to jest kolekcja?

Kolekcja (Collection), określana jako obiekt grupujący elementy w jedną „bryłę”. Struktura znacznie bardziej zaawansowana od tablic statycznych – kolekcje posiadają własne metody do wyszukiwania czy sortowania oraz umożliwiają przechowywanie dowolnego typu obiektów.

Więcej o kolekcjach:

http://java.sun.com/docs/books/tutorial/collections/index.html


2 implementacja ii kolekcje lista

2 Implementacja (ii kolekcje – lista)

Lista (interfejs) – uporządkowana kolekcja, określana czasem jako sekwencja

Cechy:

Daje dużą kontrolę nad tym gdzie chcemy wstawić nowy element

praktyczny dostęp do dowolnego elementu (indeksowanie)

Może zawierać duplikaty

Przechowuje obiekty w takiej kolejności jak je wstawimy

Główne implementacje:

ArrayList – stosunkowo podobna do tablicy. Szybki dostęp do elementów ale wolniejsza przy wstawianiu i usuwaniu do/z wnętrza.

LinkedList – tanie usuwanie i wstawianie w środek listy (stały czas w przeciwieństwie do liniowego w ArrayList). Lista dwukierunkowa, obsługuje kolejki i stosy.

Listing implementacji przy użyciu kolekcji (ArrayList) – KLIKNIJ TUTAJ.

Skrócony przykład implementacji:

// klasa

class Pracownik {

String imie;

String nazwisko;

int pensja;

// deklaracja listy

ArrayList pracownicy = new ArrayList();

// dodawanie do listy

public Pracownik (String imie, String nazwisko, int pensja) {

this.imie = imie;

this.nazwisko = nazwisko;

this.pensja = pensja;

pracownicy.add(this);

}

// pobieranie z listy

Pracownik n = (Pracownik)pracownicy.get(id);

// usuwanie z listy

pracownicy.remove(id);


2 implementacja ii kolekcje mapa

2 Implementacja (ii kolekcje - mapa)

Mapa (interfejs) – określana też jako słownik, jest odzworowaniem klucz-element. Mapa nie jest w sensie stricte kolekcją, choć jest związana z Java Collection Framework

Cechy:

Każdy element identyfikowany jest przez unikatowy klucz (1 klucz ident. max 1 el.)

Nie mogą wystąpić duplikaty kluczy

Obiekty są uporządkowane wg wewnętrznej kolejności a nie w kolejności dodawania!

Główne implementacje:

HashMap (praktyczne to samo co HashTable) - zapewnia wstawianie / szukanie el. w stałym czasie. Nieposortowane (oparte na tablicy haszującej/mieszającej).

TreeMap - implementacja w formie drzewa, zapewnia sortowanie rosnące po kluczach. Złożoność oczywiście logarytmiczna.

Skrócony przykład implementacji:

// klasa

class Pracownik {

String imie;

String nazwisko;

int pensja;

// deklaracja mapy

HashMap pracownicy = new HashMap();

// dodawanie do mapy

public Pracownik (String imie, String nazwisko, int pensja) {

this.imie = imie;

this.nazwisko = nazwisko;

this.pensja = pensja;

pracownicy.put(klucz, this);

}

// pobieranie z mapy

Pracownik p = (Pracownik)pracownicy.get(klucz);

if (p != null) {

System.out.println("pierwszy = " + p.imie);

}

// usuwanie z mapy

pracownicy.remove(klucz);


2 implementacja ii kolekcje zbi r

2 Implementacja (ii kolekcje - zbiór)

Zbiór (interfejs) – oparty na matematycznym pojęciu zbioru

Cechy:

Bardzo prosta implementacja

Brak jakiejkolwiek kolejności (uporządkowania)

Nie mogą wystąpić duplikaty elementów ani więcej niż 1 element null

Nie ma opcji bezpośredniego pobierania obiektów ze zbioru – konieczne jest uprzednie rzutowanie zbioru np. na tablicę!

Główne implementacje:

HashSet - umożliwia szybkie wyszukiwanie elementów. Zawartość nieuporządkowana.

TreeSet - zbiór uporządkowany na podstawie drzewa, gwarantuje iż elementy są posortowane rosnąco. Złożonośc logarytmiczna.

Skrócony przykład implementacji:

// klasa

class Pracownik {

String imie;

String nazwisko;

int pensja;

// deklaracja zbioru

TreeSet pracownicy = new TreeSet();

// dodawanie do zbioru

public Pracownik (String imie, String nazwisko, int pensja) {

this.imie = imie;

this.nazwisko = nazwisko;

this.pensja = pensja;

pracownicy.add(this);

}

// usuwanie ze zbioru

pracownicy.remove(new Pracownik("Jan", "Kluska"));


2 implementacja ii kolekcje iterator

2 Implementacja (ii - kolekcje - iterator)

Co to jest iterator?

Iterator (Collection) służy do poruszania się „do przodu” po elementach

kolekcji oraz umożliwia ich łatwe wyświetlanie i usuwanie (next()

zwraca kolejny element, hasNext()określa czy kolejny element istnieje,

wreszcie remove()usuwa dany element). Ponadto, iterator interfejsu List umożliwia cofanie się (analogiczne previous() oraz hasPrevious()).

Podstawową korzyścią przy korzystaniu z iteratora jest to, iż do wykonywania podstawowych zadań nie musimy znać metod

obsługiwanych przez dany interfejs czy implementację kolekcji.


2 implementacja iii jako ekstensja innej kl

2 Implementacja (iii jako ekstensja innej kl.)

Skrócony przykład implementacji:

class Pracownik {

String imie;

String nazwisko;

int pensja;

int id_pracownika;

public Pracownik(String imie, String nazwisko, int

pensja, int id_pracownika) {

this.imie = imie;

this.nazwisko = nazwisko;

this.pensja = pensja;

this.id_pracownika = id_pracownika;

}

}

class Pracownicy {

static int nastepne_id = 0;

static ArrayList listaPracownikow;

public static void main(String args[]) {

Pracownicy p = new Pracownicy();

p.dodajPracownika("Jan", "Kluska", 1200);

p.dodajPracownika("Ben", "Kenobi", 2000);

}

public Pracownicy() {

listaPracownikow = new ArrayList();

}

public void dodajPracownika

(String imie, String nazwisko, int pensja) {

listaPracownikow.add (new Pracownik

(imie, nazwisko, pensja));

}

}

Kompletny listing implementacja przy użyciu

wystąpienia innej klasy – KLIKNIJ TUTAJ.


3 dodatki metody obiektowe i klasowe

3 Dodatki (metody obiektowe i klasowe)

Metoda obiektowa – operuje na atrybutach obiektu (tego dla którego została wywołana).

Skrócony przykład implementacji:

class pozycjaNaLisciePlac {

...

int wynagrodzenie;

int premia;

int policzWynagrodzenie() {

return wynagrodzenie+premia;

}

}

Metoda klasowa – operuje na ekstensji klasy (posiada dostęp do wszystkich instancji).

Skrócony przykład implementacji:

class Pracownik {... String nazwiskoint wynagrodzenie;ArrayList listaPracownikow = new ArrayList();... int ileZarabia (String nazwisko) { // ...znajdź pracownika wewnątrz ArrayList // ...jeśli istnieje to return wynagrodzenie}

}


4 zadanie 1

4 Zadanie 1

Problem:

Chcemy, aby program wczytał z pliku listę miast (nie wiemy ile ich jest),

a następnie wypisał nazwy miast na konsolę w alfabetycznym porządku

rosnącym bez powtarzających się nazw miejscowości.

Pytanie:

Która z omówionych struktur danych będzie najodpowiedniejsza do

implementacji programu i dlaczego?

Implementacja


4 zadanie 2

4 Zadanie 2

Zaimplementować kolekcję miast z zadania 1 w postaci listy (ArrayList).

Zapewnić uporządkowanie nazw miast poprzez zastosowanie gotowego

algorytmu sortowania (sort() -statyczna metoda klasy Collections).

Elementy kolekcji są obiektami klasy Object. Iterator zwróci wartość

ogólnego typu Object. Dokonać konwersji do właściwego typu.

Implementacja


4 zadanie 3

4 Zadanie 3

Problem:

W pliku „miasta.txt” znajdują się teraz nazwy miast wraz z kodem pocztowym. Zaimplementować wyszukiwanie kodu pocztowego

dla zadanej nazwy miejscowości.

Pytanie:

Która z omówionych struktur danych będzie najodpowiedniejsza do

implementacji programu i dlaczego?

Implementacja


Implementacja ekstensji klasy

Dziękujemy za uwagę


  • Login