CZĘŚĆ I : Grupa Ośmiu
Zasadu obiektowe MATLAB dyktują tylko jedną żądaną funkcję dla każdej kaksy. W praktyce, jest osiem funkcji, tak podstawowych dla prgoramowania obiektowego MATLAB ,że każda warta jest osobnego opisu. KAlsy Toy rzadko używają więcej niż wóch lub trzech z tych ośmiu, tworząc łatwo swój projekt. Nioe jesteśmy zaineteresowani takimi klasami. Funkcje zawierające tzw, grupę ośmiu zawsze występują razem, a każda korzysta z funkcjonalności zawartej w innej składowej. Jak zoabczmy wkrótce, pojęcie interfejs idzie w parze z pojęciem hermetyzacji. Skupimy się na hermetyzacji obiektowej i opracowaniu efektywanej startegii interfejsu. Na koniec tej części zalety hermetyzacji wraz z zasadami dostępu wymuszanymi przez MATLAB staną się jasne. Każda unkcja w grupie ośmiu przyczynia się do heremtyzacji. Jeśli zastanawiasz się nad nazwami funkcji z grupy ośmiu, są one wymienione poniżej. FUnkcje należące do grupy ośmiu to
* constructor
* subserf.m
* subsasgn.m
* display.m
* struct.m
* fieldnames.m
* get.m
* set.m
Wymagane elementy są najlepszym miejscem aby rozpocząć. Po pierwsze, nie ma wiele , a po drugie, elementy wymagane powinny istnieć w każej klasie jaką piszemy. Po zajęciu się wymaganymi elementami, stworzymy zbió opcjonalnych elementów które pozwolą zmiennym obiektowym na osiągnięcie statusu równego typom wbudowanym. Bez tych elementów opcjonalnych, kod obiektowy jest trudny do zastosowania i zarządzania. Po elementach opcjonalnych zbadamy strategie dla nietypowych sytuacji. Ta część zawiera wszystkie wymagane i wiele opcjonalnych elementów kodowania zorientowanego obiektowo
Matlab : wymagania
Matalb wymusza na nas trochę swoje wymagania. Jest to dobre i złe.Dobre oznacza ,że mamy wiele swobody do realizacji naszych określonych wymagań. Oznacza również że nie musimy poświęcać wiele czasu na nukę skomplikowanych zbiorów wymagań, ani nie musiomy poświęcać wiel wysiłku w kierunku realizacji wymgaań z anszego kodu. Złe, oznacza ,że potrzebujemy własnej drogi bez korzyści z wymagań na naszej drodze. W tej części dowiemy się jak spełnić wymagania , w sposób wspierający grupę ośmiu. To pomaga utrzymac Matlab obiektowy na prostej drodze.
Zmienne , typy, klasy i obiekty
W każdej specjalności są pewne słowa, które noszą specjalne znaczenia. Na pierwszy rzut oka, sama liczba specjalnych słów związanych z programowaniem obiektowym jest przytłaczająca. Smutny fakt ,że te słowa są czasami nadużywane nie pomaga sytuacji. Dodatkowe obciążenie przychodzi ze zrozumieniem niewielkich rożnic między słowami, które pojawiają się przy opisie tej samej rzeczy. Na szczęście, opanowanie słownictwa nie jest trudne. Większość z tych róznic jest mocowana do normalnego słownictwa programowania. Omawiając programowanie obiektowe, słowa klasa i obiekt wydają się cierpieć najbardziej na nadużycia. Kiedy przyjrzeć się bliżej co te słowa faktycznie reprezentują, łatwo zrozumieć dlaczego. Najprostszym sposobem wyjaśnienia różnic między klasą i obiektem ijest połączenie ich z rzeczami jakie prawdopodobnie już znasz. Spójrz na linię poleceń Matlab w poniższym kodzie. Jeśli składnia poleceń i wyniki w klistingu są znane ,stajesz przez doskonałą szansą na pełne wykorzystania programowania obiektowego
Matlab
1 >> x = 10;
2 >> name = 'Wilbur'; > whos
4 Name Size Bytes Class
5
6 name 1x6 12 char array
7 x 1x1 8 double array
8
9 Całkowity wynik to 7 elementów używających 20 bajtów
Spójrz na informację wyświetlaną przez polecenie whos a zobaczysz, być może za pierwszym razem, tytuł nagłówkowy Class. Mam nadzieję ,że ten szczególny dobór słów jest bardzo ciekawy. Można narzekać ,że char i double nie są klasami ale raczej typami. Nie ma powodu do paniki. W tym określonym kontekście, class i type oznaczają prawie tą samą rzecz. Klasa jest nieco bardziej zczegółowym określeniem , jednym ze specjalnych znaczeń dla programistów obiektowych. W rzeczywistości, połączenie między klasą a typem jest tak bliskie ,że określenie typu zdefiniowanego przez użytkownika jest często używane jako substytut dla klasy.
Można zasadnie się zastanawiać dlaczego pionierzy obiektowi czuli potrzebę ukucia nowego terminu. Krótka odpowiedź jest taka ,że klasa reprezentuje nową kategorię typu zmiennej w tym amym duchu co tablica, komórka lub struktura. Kiedy identyfikujemy zmienną typu double, jej typ wiąże pewne oczekiwania z tą zmienną. Klasa jest bardziej złożona niż jedne prosty typ jak double, char lub integer, ale jeszcze reprezentuje typ. Jest nam dobrze z tyloma prostymi lub wbudowanymi typami ponieważ wiemy czego oczekiwać. Dla porównania, określenie typu zmiennej jako klasy jest niewygodne,chyba ,że wiemy już co to znaczy. Pewnie zapomniałeś ,że kiedyś nawet tzw. typy proste nie były takie proste. Minęło trochę czasu aby osiągnąć odpowiedni poziom zrozumienia dla double, char i cell. Ta ama prawda dotyczy klasy. Nauka programowania obiektowego wymaga czasu i wysiłku, a my nie chcemy wszystkiego na raz.
|