Algorytmy i programowanie

background image

1

Informatyka

Algorytmy i programowanie

Wykład 5-6

Struktury danych

Programowanie obiektowe

Jerzy Duda, 2010

Jerzy Duda, WZ AGH, 2009-2010

Struktury danych



Struktury danych (ang. data structure) – sposób uporz

ą

dkowania

informacji w komputerze; na strukturach danych operuj

ą

algorytmy



Przykładowe popularne struktury danych:



rekord (ang. structure, record)



tablica



lista



stos



kolejka



grafy



drzewo i jego liczne odmiany (np. drzewo binarne)



zbiory, mapy, słowniki



klasy/obiekty

background image

2

Jerzy Duda, WZ AGH, 2009-2010

Rekord



Rekord (zwany w niektórych j

ę

zykach struktur

ą

) to obiekt

programistyczny, grupa danych tego samego lub ró

ż

nego typu



Posiada ustalon

ą

struktur

ę

, oraz mo

ż

liwo

ść

odczytania i zmiany jego

elementów



Składow

ą

rekordu mo

ż

e by

ć

inny rekord



Składow

ą

rekordu mo

ż

e by

ć

tak

ż

e tablica



Przykładowa struktura:



Numer_albumu

– integer



Imi

ę

– string



Nazwisko

– string



Data_urodzenia

– DateTime



Adres_zamieszkania

– string



Rok_studiów

– integer



Ś

rednia_ocen

– float

Jerzy Duda, WZ AGH, 2009-2010

Rekordy w VBA



Zło

ż

one typy danych mo

ż

na definiowa

ć

poprzez słowo kluczowe w

bloku Type ... Type End

Type Osoba

Imi

ę

As String

Nazwisko As String
Rok_studiów As Integer

End Type

Sub test()

Dim os As Osoba
os.Imi

ę

= "Jan"

os.Nazwisko = "Kowalski"
os.Rok_studiów = 1
MsgBox os.Imi

ę

End Sub

background image

3

Jerzy Duda, WZ AGH, 2009-2010

Rekordy w VBA (tablica rekordów)



W bloku Type ... Type End mo

ż

na stosowa

ć

tablice oraz wcze

ś

niej

zdefiniowane rekordy

Type Grupa

Prowadz

ą

cy As String

Studenci(1 To 15) As Osoba

End Type

Sub test2()

Dim gr1 As Grupa
gr1.Prowadz

ą

cy = "Duda"

gr1.Studenci(1).Imi

ę

= "Anna"

gr1.Studenci(1).Nazwisko = "Anna"
gr1.Studenci(2).Imi

ę

= "Jan"

gr1.Studenci(2).Nazwisko = "Kowalski"
gr1.Studenci(3).Imi

ę

= "Adam"

gr1.Studenci(3).Nazwisko = "Kwiecie

ń

"

MsgBox g1.Studenci(1).Imi

ę

(2)

End Sub

Jerzy Duda, WZ AGH, 2009-2010

Lista



Lista jest uporz

ą

dkowan

ą

kolekcj

ą

elementów zapewniaj

ą

c

ą

dost

ę

p

do dowolnego elementu



W przeciwie

ń

stwie do tablicy rozmiar listy mo

ż

e si

ę

zwi

ę

ksza

ć

lub

zmniejsza

ć

w miar

ę

potrzeby



Ka

ż

da lista musi implementowa

ć

przynajmniej 4 operacje



insert

– wstawia element na wskazan

ą

pozycj

ę

listy i zwi

ę

ksza rozmiar

listy o 1



delete

– usuwa element ze wskazanej pozycji listy i zmniejsza jej

rozmiar



get

– zwraca warto

ść

elementu znajduj

ą

cego si

ę

na wskazanej pozycji



size

– zwraca rozmiar listy



Wszystkie pozostałe operacje mog

ą

by

ć

zaimplementowane na

bazie tych 4 operacji



Np. zmiana warto

ś

ci elementu na wskazanej pozycji

set

kombinacja delete i insert;

add

– doł

ą

czenie elementu na ko

ń

cu listy

(kombinacja size i insert)

background image

4

Jerzy Duda, WZ AGH, 2009-2010

Lista – implementacja (1)



Listy implementuje si

ę

na 2 podstawowe sposoby



listy tablicowe – oparte na tablicach



listy wi

ą

zane – oparte na wska

ź

nikach



Lista tablicowa wykorzystuje tablic

ę

do przechowywania elementów



Odczyt i modyfikacja elementów jest bardzo prosta



Operacje wstawiania i usuwania wymagaj

ą

natomiast przesuwania

(kopiowania) elementów



Ponadto zwi

ę

kszenie rozmiaru tablicy wymaga ka

ż

dorazowego

utworzenia nowej wi

ę

kszej tablicy i skopiowania do niej całej

zawarto

ś

ci listy



Implementacja tablicowa jest efektywna w przypadku, gdy dost

ę

p do

listy odbywa si

ę

na podstawie indeksów lub w sposób sekwencyjny

Jerzy Duda, WZ AGH, 2009-2010

Lista – implementacja (2)



Lista wi

ą

zana stanowi ła

ń

cuch elementów poł

ą

czonych ze sob

ą

wska

ź

nikami



Ka

ż

dy element posiada wska

ź

nik na elementy poprzedni i nast

ę

pny



Jest to lista podwójnie wi

ą

zana (dwukierunkowa)



Wstawianie i usuwanie elementów w takiej li

ś

cie wymaga jedynie

modyfikacji wska

ź

ników



Problemem jest natomiast dost

ę

p do elementu na wskazanej pozycji

– wymaga to przegl

ą

dania ła

ń

cucha wska

ź

ników

A

B

C

indeks 0

indeks 1

indeks 2

nast

ę

pny (next)

nast

ę

pny (next)

poprzedni (previous)

poprzedni (previous)

background image

5

Jerzy Duda, WZ AGH, 2009-2010

Kolekcje w VBA (1)



List

ę

tablicow

ą

mo

ż

na zaimplementowa

ć

w VBA za pomoc

ą

obiektu Collections

1.

Nale

ż

y zadeklarowa

ć

obiekt kolekcji

2.

Nast

ę

pnie utworzy

ć

obiekt kolekcji



Do kolekcji obiekty dodawane s

ą

metod

ą

Add (kolekcja sama si

ę

powi

ę

ksza)

Dim KolekcjaOsób As Collection

Sub test3()

Dim KolekcjaOsób As Collection
Set KolekcjaOsób = New Collection
KolekcjaOsób.Add "Jan Kowalski"
KolekcjaOsób.Add "Anna Nowak"

End Sub

Set KolekcjaOsób = New Collection

Jerzy Duda, WZ AGH, 2009-2010

Kolekcje w VBA (2)



Dost

ę

p do poszczególnych obiektów – wła

ś

ciwo

ść

Item



Ilo

ść

elementów mo

ż

na odczyta

ć

poprzez wła

ś

ciwo

ść

Count



Obiekty mo

ż

na usuwa

ć

metod

ą

Remove

Sub test4()

Dim Kolekcja2 As Collection
Set Kolekcja2 = New Collection
Kolekcja2.Add "Jan Kowalski"
Kolekcja2.Add "Anna Nowak"
Kolekcja2.Add "Ewa Maj"
MsgBox Kolekcja2.Count
MsgBox Kolekcja2.Item(2)
Kolekcja2.Remove(1)
MsgBox Kolekcja2.Count

End Sub

background image

6

Jerzy Duda, WZ AGH, 2009-2010

Stos



Stos (ang. Stack) jest list

ą

, której elementy dost

ę

pne s

ą

tylko z

jednego ko

ń

ca



Kraniec stosu, do którego mo

ż

na doł

ą

cza

ć

elementy i z którego

mo

ż

na je pobiera

ć

nazywany jest wierzchołkiem stosu



Stos mo

ż

e by

ć

rozpatrywany tak

ż

e jako kolejka LIFO

(Last-In, First-Out)



Podstawowe operacje wykonywane na stosie



push – odło

ż

enie elementu na stos; zwi

ę

kszenie rozmiaru o 1



pop – zdj

ę

cie elementu z wierzchołka; zmniejszenie rozmiaru o 1



size – zwraca liczb

ę

elementów na stosie

C

B

A

Wierzchołek

Jerzy Duda, WZ AGH, 2009-2010

Stos – implementacja i wykorzystanie



Stos mo

ż

na zaimplementowa

ć

wykorzystuj

ą

c



tablice



listy



Przykłady wykorzystania stosów



wie

ż

e Hanoi



kalkulator wykorzystuj

ą

cy odwrotn

ą

notacj

ę

polsk

ą



odwracanie wyrazów w ci

ą

gu



stos wywoła

ń

(call stack)



przetwarzanie dokumentów XML



zarz

ą

dzanie ekranami aplikacji (Wstecz, Dalej)



wycofywanie i ponawianie wykonanych operacji

(2+3)*5

2
3
+
5

*

background image

7

Jerzy Duda, WZ AGH, 2009-2010

Kolejka



Kolejka (ang. Queue) to lista, której elementy przechowywane s

ą

w

sposób umo

ż

liwiaj

ą

cy ich przetwarzanie w okre

ś

lonej kolejno

ś

ci



Najcz

ęś

ciej kolejno

ść

pobierania elementów z kolejki to

ż

sama jest

z kolejno

ś

ci

ą

ich umieszczania (zasada FIFO – First-In First-Out)



W przeciwie

ń

stwie do listy, z której mo

ż

emy pobiera

ć

dowolny

element, w danej chwili dost

ę

pny jest tylko element z czoła kolejki



Podstawowe operacje kolejkowe



enqueue – umieszcza element w kolejce; rozmiar zostaje zwi

ę

kszony o 1



dequeue – pobiera element z czoła kolejki; rozmiar zostaje zmniejszony



size – zwraca rozmiar kolejki



Funkcjonowanie kolejek cz

ę

sto opisywane w kategoriach producenta i

konsumenta

Producent

Producent

Konsument

Konsument

kolejka

Jerzy Duda, WZ AGH, 2009-2010

Kolejka – implementacja
i wykorzystanie



Kolejk

ę

najłatwiej zaimplementowa

ć

za pomoc

ą

listy



Kolejki mog

ą

by

ć

ograniczone (liczba elementów znajduj

ą

ca si

ę

w

kolejce nie mo

ż

e przekracza

ć

okre

ś

lonej warto

ś

ci) lub nieograniczone



Przykłady wykorzystania kolejek



kolejka zada

ń

na routerze – kolejka ograniczona



komunikacja mi

ę

dzyprocesowa i mi

ę

dzyw

ą

tkowa – kolejka blokuj

ą

ca



obsługa zgłosze

ń

np. w call center – kolejka blokuj

ą

ca



Kolejka blokuj

ą

ca jest kolejk

ą

ograniczon

ą



W przypadku gdy producent b

ę

dzie próbował doda

ć

element do

zapełnionej kolejki, zostanie zablokowany do czasu zwolnienia miejsca
w kolejce

Zgłoszenie

1

Klient 4

Konsultant

Konsultant

Call center

Zgłoszenie

2

Zgłoszenie

3

Konsultant

background image

8

Jerzy Duda, WZ AGH, 2009-2010

Kolejka priorytetowa



Kolejka priorytetowa (ang. Priority Queue) to kolejka zapewniaj

ą

ca

dost

ę

p do swych elementów od najwi

ę

kszego do najmniejszego



W danej chwili dost

ę

pny jest tylko najwi

ę

kszy element



Najwi

ę

kszy oznacza pewne kryterium porz

ą

dkuj

ą

ce (komparator)



Zwykła kolejka FIFO – kryterium jest czas przebywania w kolejce



Stos (LIFO) – kryterium jest moment poło

ż

enia elementu na stosie



Podobnie jak dla zwykłych kolejek najwa

ż

niejsze operacje to



enqueue – umieszcza element w kolejce; rozmiar zostaje zwi

ę

kszony o 1



dequeue – pobiera element z czoła kolejki; rozmiar zostaje zmniejszony



peek – udost

ę

pnia element z czoła kolejki

Jerzy Duda, WZ AGH, 2009-2010

8

0

5

3

Kolejka priorytetowa – implementacja



Kolejk

ę

priorytetow

ą

mo

ż

na zaimplementowa

ć

na wiele sposobów



Najłatwiej wykorzysta

ć

list

ę

posortowan

ą

, w której elementy

przechowywane s

ą

w odwrotnej kolejno

ś

ci priorytetów



Operacja pobrania elementu o najwi

ę

kszym priorytecie jest

natychmiastowa, natomiast operacja zakolejkowania elementu ma
liniow

ą

zło

ż

ono

ść



Bardziej efektywn

ą

obliczeniowo implementacj

ą

jest wykorzystanie

stogu (kopiec, ang. heap)



Stóg (inaczej kopiec, sterta) to drzewo binarne, w którym ka

ż

dy w

ę

zeł

ma od 0 do 2 dzieci

X

M

K

A

D

B

E

A

0

1

2

E

4

6

7

8

X

M

K

E

A

F

D

D

B

background image

9

Jerzy Duda, WZ AGH, 2009-2010

Kolejka priorytetowa – implementacja
(2)



Wstawianie elementu do kolejki (wynurzanie) – O(log

2

n)



Zdj

ę

cie elementu korzenia (zatapianie) – O(log

2

n)

X

M

K

A

D

B

F

D

E

P

X

M

K

P

D

B

F

D

E

A

X

P

K

M

D

B

F

D

E

A

A

P

K

M

D

B

F

D

E

X

P

A

K

M

D

B

F

D

E

X

P

M

K

A

D

B

F

D

E

X

Warunek stogowy: ka

ż

dy w

ę

zeł jest wi

ę

kszy od wi

ę

kszego ze swych synów

Jerzy Duda, WZ AGH, 2009-2010

Graf (1)



Graf to struktura G=(V, E) składaj

ą

ca si

ę

z w

ę

złów (wierzchołków V)

poł

ą

czonych za pomoc

ą

kraw

ę

dzi (E)



Grafy dzieli si

ę

na



nieskierowane



skierowane – kraw

ę

dzie skierowane nazywane łukami (A)



Grafy mo

ż

na przechowywa

ć

w pami

ę

ci na kilka sposobów



macierz s

ą

siedztwa

lista incydencji

1

0

1

1

3

4

2

1

0

0

0

4

1

1

1

3

0

0

1

2

0

1

0

1

1: 2,3

2: 1,3

3: 1,2,4

4: 3

Zło

ż

ono

ść

pami

ę

ciowa O(V

2

)

Zło

ż

ono

ść

pami

ę

ciowa O(V+E)

background image

10

Jerzy Duda, WZ AGH, 2009-2010

Graf (2)



lista kraw

ę

dzi

macierz incydencji

1 - 2

1 - 3

3 - 2

3 - 4

4 - 3

Zło

ż

ono

ść

pami

ę

ciowa O(E

2

)

Zło

ż

ono

ść

pami

ę

ciowa O(V*E)

0

1

-1

0

3-2

-1

1

0

0

3-4

4-3

1-3

1-2

1

0

0

4

-1

-1

0

3

0

0

-1

2

0

1

1

1

Jerzy Duda, WZ AGH, 2009-2010

Binarne drzewo wyszukiwawcze



Drzewo (ang. tree) jest zbiorem poł

ą

czonych w

ę

złów (ang. nodes), w ten

sposób,

ż

e ka

ż

dy posiada zero lub wi

ę

cej w

ę

złów-dzieci i co najwy

ż

ej

jednego rodzica



W

ę

zły nie posiadaj

ą

ce dzieci nazywane s

ą

li

ść

mi (ang. leaves)



Drzewo binarne – w

ę

zeł mo

ż

e mie

ć

co najwy

ż

ej 2 dzieci (lewe i prawe)



Binarne drzewo wyszukiwacze – to drzewo binarne, w którym w

ę

zły

poło

ż

one na lewo od danego w

ę

zła s

ą

od niego mniejsze, a poło

ż

one na

prawo – wi

ę

ksze



Warunek ten umo

ż

liwia efektywne wstawianie, usuwanie i wyszukiwanie

w

ę

złów w drzewie



Ś

redni czas wyszukiwania w drzewie binarnym jest proporcjonalny do

jego wysoko

ś

ci (równy O(h))



W drzewie wywa

ż

onym (ang. balanced) wysoko

ść

drzewa wynosi

O(log N)

background image

11

Jerzy Duda, WZ AGH, 2009-2010

Binarne drzewo wyszukiwawcze (2)



Przykładowe drzewo



Minimum – skrajny lewy w

ę

zeł (A)



Maksimum – skrajny prawy w

ę

zeł (P)



Nast

ę

pnik – w

ę

zeł o warto

ś

ci bezpo

ś

rednio wi

ę

kszej (A

D, H

I, I

K)



Poprzednik – w

ę

zeł o warto

ś

ci bezpo

ś

rednio mniejszej (P

M, F

D,

I

H)

Demo

I

D

L

F

H

K

M

A

korze

ń

lewy

(mniejszy)

prawy

(wi

ę

kszy)

P

li

ś

cie

Jerzy Duda, WZ AGH, 2009-2010



Wyszukiwanie elementu K



Wstawianie (identycznie ja wyszukiwanie)

Binarne drzewo wyszukiwawcze (3)

Demo

I

D

L

F

H

K

M

A

P

I

D

L

F

H

K

M

A

P

K>I
schodzimy
po prawym

I

D

L

F

H

K

M

A

P

K<L
schodzimy
po lewym

I

D

L

F

H

K

M

A

P

J



Usuwanie zale

ż

y od poło

ż

enia w

ę

zła

background image

12

Jerzy Duda, WZ AGH, 2009-2010

Zbiór



Zbiór (ang. set) to nieuporz

ą

dkowana pula danych niedopuszczaj

ą

c

ą

do dublowania elementów



Na zbiorze wykonywane s

ą

nast

ę

puj

ą

ce operacje



add – dodaje warto

ść

do zbioru; zwraca false jak ju

ż

jest



delete – usuwa warto

ść

ze zbioru



contains – sprawdza czy podana warto

ść

jest w zbiorze



size – zwraca rozmiar zbioru



clear – usuwa wszystkie elementy ze zbioru

I

D

L

F

H

K

M

A

P

Jerzy Duda, WZ AGH, 2009-2010

Mapa



Mapa (ang. map) to obiekt ustanawiaj

ą

cy zwi

ą

zek pomi

ę

dzy kluczami

a warto

ś

ciami



Ka

ż

dy klucz musi by

ć

ż

ny od pozostałych



Mapy cz

ę

sto nazywane s

ą

słownikami (dictionaries)



Operacje wykonywane na mapach



get(klucz) – odnajduje warto

ść

skojarzon

ą

z kluczem



set(klucz,warto

ść

) – przypisuje danemu kluczowi now

ą

warto

ść



delete(klucz) – usuwa warto

ść

przypisan

ą

do klucza



contains – sprawdza istnienie klucza w mapie



size – zwraca liczb

ę

par "klucz-warto

ść

"



clear – usuwa z mapy wszystkie pary

123-456

555-444

777-890

Ala

Ewa

Ela

background image

13

Jerzy Duda, WZ AGH, 2009-2010

Tablica haszuj

ą

ca (1)



Tablica haszuj

ą

ca lub mieszaj

ą

ca (ang. hash table) to struktura danych

słu

żą

ca do przechowywania informacji, w taki sposób aby mo

ż

liwy był do

nich szybki dost

ę

p – idealnie O(1)



Odwołania do przechowywanych obiektów dokonywane s

ą

na podstawie

klucza, który dany obiekt (informacj

ę

) identyfikuje



W tablicy mieszaj

ą

cej stosuje si

ę

funkcj

ę

mieszaj

ą

c

ą

(haszuj

ą

c

ą

), która

dla danego klucza wyznacza indeks w tablicy zwany wyci

ą

giem, skrótem

lub znacznikiem haszowania



Przykład: haszowanie ła

ń

cucha znakowego



E+L+V+I+S = 5+12+22+9+19 = 67



M+A+D+O+N+N+A = 13+1+4+15+14+14+1 = 62



S+T+I+N+G = 19+20+9+14+7 = 69



Główna wada – kolizyjno

ść



L+I+V+E+S = 12+9+2+5+19 = 67 (= ELVIS)

Jerzy Duda, WZ AGH, 2009-2010

Tablica haszuj

ą

ca (2)



Lepsze haszowanie ła

ń

cucha – algorytm CRC (implementowane w Java)



31

4*

E+31

3

*L+31

2

*V+31

1

*I+S = 4 996 537



31

4*

L+31

3

*I+31

2

*V+31

1

*E+S = 11 371 687



W celu zredukowania rozmiaru indeksów stosuje si

ę

operator modulo



ELVIS = 4 996 537 % 17 = 16



LIVES = 11 371 687 % 17 = 13



Haszowanie doskonałe (perfect hashing) – funkcja, która nie powoduje
kolizji; w rzeczywisto

ś

ci nieosi

ą

galne



Rozwi

ą

zywanie kolizji



metoda ła

ń

cuchowa – elementy przechowuje si

ę

nie w tablicy lecz na li

ś

cie

zwi

ą

zanej z danym indeksem



metoda adresowania otwartego – je

ż

eli jest kolizja dla nowego elementu

dodaje si

ę

warto

ść

pewnej funkcji przyrostu (np. próbkowanie liniowe)

background image

14

Jerzy Duda, WZ AGH, 2009-2010

Model obiektowy Excela

Jerzy Duda, WZ AGH, 2009-2010



Ka

ż

dy obiekt posiada unikatowe dla niego wła

ś

ciwo

ś

ci oraz

metody



Podstawowa hierarchia obiektów w Excelu



Application – obiekt aplikacji Excel



obiekt Workbooks – kolekcja wszystkich obiektów Workbook



obiekt Workbook – obiekt skoroszytu (mo

ż

e by

ć



obiekt Worksheets – kolekcja wszystkich obiektów Worksheet



obiekt Worksheet – obiekt arkusza Excela

Model obiektowy Excela (1)

background image

15

Jerzy Duda, WZ AGH, 2009-2010



Podstawowa hierarchia obiektów w Excelu (c.d.)



obiekt Sheets – kolekcja wszystkich obiektów Worksheet
(arkuszy) oraz obiektów Chart (wykresów)



obiekt Worksheet – obiekt arkusza Excela składa si

ę

z



kolekcji obiektów Rows – poszczególne wiersze arkusza



kolekcji obiektów Columns – kolumny arkusza



obiektu Range – zakres komórek

Model obiektowy VBA dla Excel (2)

Jerzy Duda, WZ AGH, 2009-2010



Podstawowe metody i wła

ś

ciwo

ś

ci obiektu

Worksheets



Add – dodaje arkusz do arkusz



Close – zamyka arkusz



Delete – usuwa arkusza



Activate – uaktywnia arkusz



Count – podaje liczb

ę

arkuszy



Name – zwraca/ustawia nazw

ę

arkusza

Model obiektowy VBA dla Excel (3)

Sub test6()

MsgBox Worksheets.Count
Worksheets.Add
Worksheets(1).Name = "Test"
Worksheets("Test").Rows(1).Select

End Sub

background image

16

Jerzy Duda, WZ AGH, 2009-2010



Podstawowe metody i wła

ś

ciwo

ś

ci obiektu

Range



Value – odczytuje/ustawia warto

ść

dla zakresu



Formula – odczytuje/ustawia formuł

ę

dla zakresu



Select – zaznacza zakres



Font – formatuje czcionk

ę



Cells(x,y) – odwołuje si

ę

do komórki (x,y) z podanego zakresu



Offset(x,y) – adres jako przesuni

ę

cie w pionie o x i w poziomie o y

Model obiektowy VBA dla Excel (4)

Sub test7()

Worksheets(1).Activate
Range("A1:C5").Value = "*"
Range("A1:C5").Cells(2, 2) = "@"
Range("B3").Offset(-2, 2) = "$"

End Sub

Jerzy Duda, WZ AGH, 2009-2010

Projektowanie obiektowe





Projektowanie zorientowane obiektowo (OOP)

Projektowanie zorientowane obiektowo (OOP)

-

podział aplikacji na kilka autonomicznych
komponentów, które pracuj

ą

razem



Mimo,

ż

e istnieje wiele metodologii takiego

podziału projektowanie obiektowe to bardziej
sztuka ni

ż

nauka

*



Proces projektowania zorientowanego obiektowo
składa si

ę

z trzech podstawowych zada

ń

:

1.

podział dziedziny problemu na typy obiektów (klasy)

2.

modelowanie zwi

ą

zków pomi

ę

dzy tymi typami

3.

projektowanie pól oraz metod dost

ę

pu w typach

*

Ź

ródło: Patrick Niemeyer, Jonathan Knudsen: Java. Wprowadzenie

background image

17

Jerzy Duda, WZ AGH, 2009-2010

Obiekt



Definicja powszechna:



Obiekt w j

ę

zyku obiektowym reprezentuje obiekt w

ś

wiecie

rzeczywistym; jest struktur

ą

posiadaj

ą

c

ą

to

ż

samo

ść

, stan

(pola) i zachowanie (metody)



Definicja ogólniejsza:



Obiekt jest elementem modelu poj

ę

ciowego obdarzonym

odpowiedzialno

ś

ci

ą

za pewien obszar

ś

wiata

rzeczywistego; sposób realizacji tej odpowiedzialno

ś

ci

zale

ż

y od samego obiektu

*

Ź

ródło: http://wazniak.mimuw.edu.pl/

Jerzy Duda, WZ AGH, 2009-2010

Poj

ę

cia OOP

Worksheet.Name

Jaka

ś

cecha „rzeczy”

Wła

ś

ciwo

ść

(Property)

Worksheet.Add

Czynno

ść

, któr

ą

„rzecz” mo

ż

e wykona

ć

Metoda

Worksheet

Jaka

ś

„rzecz”

Obiekt

Przykład

Opis

Poj

ę

cie

background image

18

Jerzy Duda, WZ AGH, 2009-2010

Odpowiedzialno

ść

*

Ź

ródło: http://wazniak.mimuw.edu.pl/

Hermetyzacja

Polimorfizm

Dziedziczenie

Abstrakcja

Elastyczność

Modularyzacja

Powtórne użycie

Odpowiedzialność

Jerzy Duda, WZ AGH, 2009-2010

Metodyka CRC

Class – Responsibilty – Collaboration) 1/2



Zaproponowana przez jednego z propagatorów tzw.
zwinnych metodyk – Warda Cunninghama



Karty CRC s

ą

kartkami papieru podzielonymi na trzy cz

ęś

ci,

opisuj

ą

cymi nast

ę

puj

ą

ce własno

ś

ci klasy:



nazw

ę

klasy (ang. Class), intuicyjnie opisuj

ą

c

ą

jej

odpowiedzialno

ść

,



odpowiedzialno

ść

(ang. Responsibility), zawieraj

ą

c

ą

dłu

ż

szy

opis zada

ń

, jakie b

ę

d

ą

powierzone klasie,



współdziałanie (ang. Collaboration), przedstawiaj

ą

ce

interakcje obiektu z innymi klasami.

*

Ź

ródło: http://wazniak.mimuw.edu.pl/

background image

19

Jerzy Duda, WZ AGH, 2009-2010

Metodyka CRC

Class – Responsibilty – Collaboration) 2/2



Szczególnie przydatna na etapie definiowania
odpowiedzialno

ś

ci poszczególnych klas i okre

ś

lania

sposobu współpracy



Pomija całkowicie wewn

ę

trzn

ą

struktur

ę

klas, skupiaj

ą

c si

ę

wył

ą

cznie na ich zachowaniu i odpowiedzialno

ś

ci



Zło

ż

ono

ść

procesu projektowania schematu klas jest

ograniczona do minimum

*

Ź

ródło: http://wazniak.mimuw.edu.pl/

Jerzy Duda, WZ AGH, 2009-2010

Przykład:

Ś

rednia ocen dla grupy studentów

Podział na klasy i zwi

ą

zki mi

ę

dzy nimi



Cel:
Stworzenie aplikacji, która
zapami

ę

tuje podstawowe

dane dotycz

ą

ce grupy

studentów, prowadz

ą

cego

oraz liczy

ś

redni

ą

ocen dla

tej grupy

+UstawDateUr()
+PobierzDateUr() : Date
+UstawNazwisko()
+PodajNazwisko() : string
+UstawImie()
+PodajImie() : string

-nazwisko : string
-imie : string
-data_ur : Date

Osoba

+PodajOcene() : float
+PodajDate() : Date

-ocena : float
-data_oceny : Date

Student

+podajTytul() : string
+ustawTytul()
+ustawOcene()
+ustawDateOceny()

+tytuł : string

Pracownik

+DodajOsobe()
+PrzypiszPrac()
+LiczSrednia() : float

-studenci[] : Student
-pracownik : Pracownik
+numer : int

Grupa

1

1..*

1..*

1

background image

20

Jerzy Duda, WZ AGH, 2009-2010

Tworzenie klasy w VBA



Menu

Insert



Class Module



Ustawiamy Name
– Nazwa klasy



Deklarujemy zmienne
prywatne (ukryte)



Jest to mechanizm

hermetyzacji

zmiennych

Jerzy Duda, WZ AGH, 2009-2010

Hermetyzacja



Definicja powszechna



Ukrywanie danych przed niepo

żą

danym dost

ę

pem



Wystarczy zadeklarowa

ć

pola jako niepubliczne oraz

stworzy

ć

metody dost

ę

pu do nich, aby osi

ą

gn

ąć

wła

ś

ciwy

poziom ukrycia implementacji

*

Ź

ródło: http://wazniak.mimuw.edu.pl/

+UstawDateUr()
+PobierzDateUr() : Date
+UstawNazwisko()
+PodajNazwisko() : string
+UstawImie()
+PodajImie() : string

-nazwisko : string
-imie : string
-data_ur : Date

Osoba

Private pNazwisko As String
Private pImie As String
Private pData As Date

Public Property Get Nazwisko() As String

Nazwisko = pNazwisko

End Property
Public Property Let Nazwisko(Value As String)

pNazwisko = Value

End Property
...

background image

21

Jerzy Duda, WZ AGH, 2009-2010

Wła

ś

ciwo

ś

ci w VBA (1)



Dla zhermetyzowanych zmiennych nale

ż

y utworzy

ć

metody

dost

ę

powe (wła

ś

ciwo

ś

ci)





Property Get

Property Get

dla zwrotu warto

ś

ci ukrytej zmiennej skalarnej lub

obiektowej





Property

Property

Let

Let

dla ustawienia warto

ś

ci ukrytej zmiennej skalarnej





Property Set

Property Set

dla ustawienia warto

ś

ci ukrytej zmiennej obiektowej

Private string nazwisko
Public Property Get

Get

Nazwisko() As String

Nazwisko = nazwisko

End Property
Public Property Let

Let

Nazwisko(Value As String)

nazwisko = Value

End Property

Private Pracownik prowadz

ą

cy

Public Property Ge

Ge

t

t

Prowadz

ą

cy()

Set Prowadz

ą

cy = pracownik

End Property
Public Property S

S

et

et

Prowadz

ą

cy(Value As Pracownik)

set prowadz

ą

cy = Value

End Property

Jerzy Duda, WZ AGH, 2009-2010

Wła

ś

ciwo

ś

ci w VBA (2)



Je

ż

eli zmienna ma by

ć

tylko do odczytu na zewn

ą

trz klasy,

tworzymy tylko wła

ś

ciwo

ść

Get



Je

ż

eli chcemy tylko da

ć

mo

ż

liwo

ść

tylko jednorazowego

przypisania obiektu do zmiennej stosujemy nast

ę

puj

ą

cy kod

Private string nazwisko
Public Property Get

Get

Nazwisko() As String

Nazwisko = nazwisko

End Property

Dim os As New Osoba
Osoba.Nazwisko = "Kowalski"

'Bł

ą

d

Private Pracownik prowadz

ą

cy

Public Property Set Prowadz

ą

cy(Value As Pracownik)

If prowadz

ą

cy Is Nothing Then

Set prowadz

ą

cy = Value

End If

End Property

background image

22

Jerzy Duda, WZ AGH, 2009-2010

U

ż

ycie wła

ś

ciwo

ś

ci klasy w VBA

1.

Deklaracja obiektu (

Dim obiekt As klasa

)

2.

Utworzenie obiektu (

Set obiekt = New klasa

)

3.

Ustawienie wła

ś

ciwo

ś

ci

(

obiekt.właciwo

ść

= warto

ść

)



Obiekty mo

ż

na równie

ż

tworzy

ć

podczas deklaracji

Dim os As Osoba
Set os = New Osoba
os.Imi

ę

= "Anna"

os.Nazwisko = "Nowak"
os.Data = "20-02-1990"

Dim os As New

New

Osoba

os.Imi

ę

= "Anna"

...

Jerzy Duda, WZ AGH, 2009-2010

Metody w VBA



Dla klas mo

ż

na tworzy

ć

„zwykłe” metody operuj

ą

ce na

zmiennych klasy

...
Public Sub Wy

ś

wietlDane()

MsgBox "Osoba: " & Imi

ę

& " " & Nazwisko

End Sub

Dim os As New

New

Osoba

os.Imi

ę

= "Anna"

os.Nazwisko = "Nowak"
os.Wy

ś

wietlDane

background image

23

Jerzy Duda, WZ AGH, 2009-2010

Konstruktory i destruktory w VBA



Klasa mo

ż

e posiada

ć

te

ż

metod

ę

inicjalizuj

ą

c

ą

konstruktor



Metoda ta jest wywoływana w momencie tworzenia obiektu
(operatorem New)



Analogicznie do konstruktorów klasa mo

ż

e posiada

ć

te

ż

destruktor



Destruktory uruchamiane s

ą

w momencie usuwania obiektu z

pami

ę

ci



Destruktory słu

żą

zwalnianiu pami

ę

ci, zamykaniu plików, itp/

Private Sub Class_Initialize()

pOcena = 2.0

End Sub

Private Sub Class_Terminate()

' jaki

ś

kod '

End Sub

Jerzy Duda, WZ AGH, 2009-2010

Dziedziczenie



Mechanizm wyra

ż

ania podobie

ń

stwa

mi

ę

dzy klasami



Upraszcza definicje klas podobnych do ju

ż

zdefiniowanych



Opisuje generalizacj

ę

i specjalizacj

ę

,

czyni

ą

c wspólne atrybuty i usługi jawnymi

wewn

ą

trz hierarchii klas



W VBA nie ma mechanizmu dziedziczenia
klas; zamiast niego mo

ż

na stosowa

ć

interfejsy

*

Ź

ródło: Coad, Yourdon: Analiza obiektowa, ReadMe 1994

background image

24

Jerzy Duda, WZ AGH, 2009-2010

Abstrakcja w OOP



Zasada ignorowania tych aspektów przedmiotu, które
nie s

ą

istotne z punktu widzenia bie

żą

cego celu, by móc

lepiej skoncentrowa

ć

si

ę

na wła

ś

ciwych [Słownik

Oxford]



Zdolno

ść

do ignorowania niektórych decyzji

projektowych lub mo

ż

liwo

ś

ci odło

ż

enia ich w czasie



System zbudowany z abstrakcyjnych komponentów
mo

ż

e by

ć

łatwo rozszerzany, poniewa

ż

zmiany nie s

ą

widoczne poza tym komponentem

*

Ź

ródło: http://wazniak.mimuw.edu.pl/

Jerzy Duda, WZ AGH, 2009-2010

Abstrakcja w VBA



W VBA nie mo

ż

na tworzy

ć

klas abstrakcyjnych, nie ma te

ż

mechanizmu dziedziczenia klas



Zamiast tego mo

ż

na wykorzysta

ć

interfejsy





Interfejs

Interfejs

to zbiór wła

ś

ciwo

ś

ci i metod (a tak

ż

e zdarze

ń

), które

okre

ś

laj

ą

cechy i zachowanie obiektu (odpowiedzialno

ść

)



Mo

ż

na tworzy

ć

interfejsy abstrakcyjne
poprzez nie-
implementowanie
kodu poszczególnych
własno

ś

ci i metod

*

Ź

ródło: http://wazniak.mimuw.edu.pl/

Public Property Get Imi

ę

() As String

End Property
Public Property Let Imi

ę

(Value As String)

End Property
Public Property Get Nazwisko() As String
End Property
Public Property Let Nazwisko(Value As String)
End Property
Public Property Get Data() As Date
End Property
Public Property Let Data(Value As Date)
End Property

background image

25

Jerzy Duda, WZ AGH, 2009-2010

Interfejs i dziedziczenie w VBA



Implementacja interfejsu (dziedziczenie jego
odpowiedzialno

ś

ci, kontraktu) odbywa si

ę

poprzez

wstawienie deklaracji Implements na pocz

ą

tku modułu klasy

Implements

Implements

AOsoba

Private pImi

ę

As String

Private pNazwisko As String
Private pData As Date
Private pOcena As Double
Public Property Get AOsoba_Imi

ę

() As String

AOsoba_Imi

ę

= pImi

ę

End Property
Public Property Let AOsoba_Imi

ę

(Value As String)

pImi

ę

= Value

End Property
Public Property Get AOsoba_Nazwisko() As String

AOsoba_Nazwisko = pNazwisko

End Property
...

Jerzy Duda, WZ AGH, 2009-2010

Polimorfizm



Poly

(gr. wiele)

morph

(gr. posta

ć

)



Mechanizm umo

ż

liwiaj

ą

cy współistnienie ró

ż

nych

metod, które mog

ą

zosta

ć

wykonane w odpowiedzi na

komunikat odebrany przez obiekt



Wybór metody dokonywany jest dynamicznie, na
podstawie typu obiektu odbiorcy

*

Ź

ródło: http://wazniak.mimuw.edu.pl/

background image

26

Jerzy Duda, WZ AGH, 2009-2010

Polimorfizm w VBA – przykład

'Interfejs Figura

Public Sub Rysuj()
End Sub

'Klasa Koło

Implements Figura
Sub Figura_Rysuj()
MsgBox "Rysuj

ę

koło"

End Sub

'Klasa Kwadrat

Implements Figura
Sub Figura_Rysuj()
MsgBox "Rysuj

ę

kwadrat"

End Sub

Sub testF()

Dim ko As New koło
Dim kw As New Kwadrat
Call Maluj(ko)
Call Maluj(kw)

End Sub

Sub Maluj(f As Figura)

f.Rysuj

End Sub

Jerzy Duda, WZ AGH, 2009-2010

Kolekcje obiektów w VBA



Kolekcja obiektów Osoba

Sub testGrupy()

Dim grupa As New Collection
Dim s1 As New Osoba
s1.Imi

ę

= "Jan"

s1.Nazwisko = "Kowalski"
s1.Ocena = 4
grupa.Add s1
Dim s2 As New Osoba
s2.Imi

ę

= "Anna"

s2.Nazwisko = "Nowak"
s2.Ocena = 5
grupa.Add s2

...

...

suma = 0
For Each s In grupa

suma = suma + s.Ocena

Next
MsgBox "

Ś

rednia ocen " &

suma / grupa.Count

End Sub

background image

27

Jerzy Duda, WZ AGH, 2009-2010

Serializacja obiektów



Serializacja

– w programowaniu komputerów proces

przekształcania obiektów do postaci szeregowej (czyli w
strumie

ń

bajtów) z zachowaniem aktualnego stanu

obiektu



Serializowany obiekt mo

ż

e zosta

ć

utrwalony w pliku

dyskowym, przesłany do innego procesu lub innego
komputera poprzez sie

ć



Procesem odwrotnym do serializacji jest

deserializacja

.

Proces ten polega na odczytaniu wcze

ś

niej zapisanego

strumienia danych i odtworzeniu na tej podstawie
obiektu klasy wraz z jego stanem bezpo

ś

rednio sprzed

serializacji

*

Ź

ródło: http://wikipedia.org

Jerzy Duda, WZ AGH, 2009-2010

Serializacja obiektów w VBA (1)



Serializacja

*

Ź

ródło: http://wazniak.mimuw.edu.pl/

Sub Serializuj_Osoba(os As Osoba)

Open "Dane" For Output As #1
Write #1, os.Imi

ę

Write #1, os.Nazwisko
Write #1, os.Data
Close #1

End Sub



Deserializacja

Function Deserializuj_Osoba() As Osoba

Open "Dane" For Input As #1
Input #1, Imi

ę

Input #1, Nazwisko
Input #1, Data
Close #1
Dim os As New Osoba
os.Imi

ę

= Imi

ę

os.Nazwisko = Nazwisko
os.Data = Data
Set Deserializuj_Osoba = os

End Function

background image

28

Jerzy Duda, WZ AGH, 2009-2010



Kod testuj

ą

cy



Plik z danymi – „Dane”

Serializacja obiektów w VBA (2)

Sub Test_Serializuj()

Dim os1 As New Osoba
os1.Imi

ę

= "Anna"

os1.Nazwisko = "Nowak"
Call Serializuj_Osoba(os1)
Dim os2 As Osoba
Set os2 = Deserializuj_Osoba()
MsgBox os2.Imi

ę

End Sub

"Anna"
"Nowak"
#1899-12-30#


Wyszukiwarka

Podobne podstrony:
algorytmy, programy, jezyki pro Nieznany (2)
algorytmy3, Programowanie
algorytmy programy
IT Wprowadzenie do algorytmiki i programowania wyszukiwanie i porządkowanie informacji
elementy algorytmu programu kolektorek
Wyklad 07 Problem Algorytm Program
ALgorytmy i programowanie, POLITECHNIKA wydział E kierunek I, ALGORYTMY I ZLOZONOSC, ROZNE JAKIES TA
algorytmy2, Programowanie
algorytmy, programy, jezyki pro Nieznany (2)
Metody układania algorytmów rekurencja, metoda dziel i zwyciężaj, programowanie dynamiczne, metoda
ALGORYTM, Tutoriale, Programowanie
Algorytmy, struktury danych i techniki programowania wydanie 3
2009 12 Metaprogramowanie algorytmy wykonywane w czasie kompilacji [Programowanie C C ]

więcej podobnych podstron