OOAD - Zasady zorientowane obiektowo

Zasady systemów obiektowych

Ramy koncepcyjne systemów zorientowanych obiektowo są oparte na modelu obiektowym. Istnieją dwie kategorie elementów w systemie zorientowanym obiektowo -

Major Elements- Zasadniczo oznacza to, że jeśli model nie zawiera żadnego z tych elementów, przestaje być obiektowy. Cztery główne elementy to -

  • Abstraction
  • Encapsulation
  • Modularity
  • Hierarchy

Minor Elements- Drobno rozumie się, że te elementy są użyteczną, ale nie niezbędną częścią modelu obiektowego. Trzy drobne elementy to -

  • Typing
  • Concurrency
  • Persistence

Abstrakcja

Abstrakcja oznacza skupienie się na podstawowych cechach elementu lub obiektu w OOP, ignorując jego obce lub przypadkowe właściwości. Podstawowe cechy są związane z kontekstem, w którym obiekt jest używany.

Grady Booch zdefiniował abstrakcję następująco:

„Abstrakcja określa podstawowe cechy obiektu, które odróżniają go od wszystkich innych rodzajów obiektów, a tym samym zapewniają jasno zdefiniowane granice pojęciowe w odniesieniu do perspektywy widza”.

Example - Kiedy projektowana jest klasa Student, atrybuty numer_rejestracji, nazwa, kurs i adres są uwzględniane, a cechy takie jak częstość_impulsów i rozmiar_buty są eliminowane, ponieważ są one nieistotne z punktu widzenia instytucji edukacyjnej.

Kapsułkowanie

Hermetyzacja to proces wiązania razem atrybutów i metod w klasie. Dzięki hermetyzacji wewnętrzne szczegóły klasy mogą być ukryte z zewnątrz. Klasa zawiera metody udostępniające interfejsy użytkownika, za pomocą których można używać usług udostępnianych przez klasę.

Modułowość

Modułowość to proces dekompozycji problemu (programu) na zestaw modułów w celu zmniejszenia ogólnej złożoności problemu. Booch zdefiniował modułowość jako -

„Modułowość to właściwość systemu, który został rozłożony na zestaw spójnych i luźno powiązanych modułów”.

Modułowość jest nierozerwalnie związana z hermetyzacją. Modularność można wizualizować jako sposób odwzorowania zamkniętych abstrakcji na rzeczywiste, fizyczne moduły charakteryzujące się dużą spójnością w ramach modułów, a ich interakcja lub sprzężenie międzymodułowe jest niskie.

Hierarchia

Jak mówi Grady Booch, „Hierarchia to uszeregowanie lub uporządkowanie abstrakcji”. Dzięki hierarchii system może składać się z powiązanych ze sobą podsystemów, które mogą mieć własne podsystemy i tak dalej, aż do osiągnięcia najmniejszych komponentów poziomu. Wykorzystuje zasadę „dziel i rządź”. Hierarchia umożliwia ponowne użycie kodu.

Dwa typy hierarchii w OOA to -

  • “IS–A” hierarchy- Definiuje hierarchiczną zależność w dziedziczeniu, dzięki której z nadklasy można wyprowadzić pewną liczbę podklas, które mogą ponownie mieć podklasy i tak dalej. Na przykład, jeśli wyprowadzimy klasę Rose z klasy Flower, możemy powiedzieć, że róża „jest” kwiatem.

  • “PART–OF” hierarchy- Definiuje hierarchiczną relację w agregacji, dzięki której klasa może składać się z innych klas. Na przykład kwiat składa się z działek, płatków, pręcików i owocolistka. Można powiedzieć, że płatek jest „częścią” kwiatu.

Pisanie na maszynie

Zgodnie z teoriami abstrakcyjnego typu danych, typ jest charakterystyką zbioru elementów. W OOP klasa jest wizualizowana jako typ o właściwościach odmiennych od innych typów. Wpisywanie to egzekwowanie pojęcia, że ​​obiekt jest instancją jednej klasy lub typu. Wymusza również, że obiekty różnych typów nie mogą być zasadniczo wymieniane; i mogą być wymieniane tylko w bardzo ograniczonym zakresie, jeśli jest to absolutnie konieczne.

Dwa rodzaje pisania to -

  • Strong Typing - Tutaj operacja na obiekcie jest sprawdzana w momencie kompilacji, tak jak w języku programowania Eiffel.

  • Weak Typing- Tutaj wiadomości mogą być wysyłane do dowolnej klasy. Operacja jest sprawdzana tylko w momencie wykonywania, tak jak w języku programowania Smalltalk.

Konkurencja

Współbieżność w systemach operacyjnych umożliwia jednoczesne wykonywanie wielu zadań lub procesów. Kiedy w systemie istnieje pojedynczy proces, mówi się, że istnieje jeden wątek kontroli. Jednak większość systemów ma wiele wątków, niektóre są aktywne, niektóre czekają na procesor, niektóre są zawieszone, a niektóre zakończone. Systemy z wieloma procesorami z natury umożliwiają współbieżne wątki kontroli; ale systemy działające na jednym procesorze używają odpowiednich algorytmów, aby zapewnić sprawiedliwy czas procesora wątkom, aby umożliwić współbieżność.

W środowisku zorientowanym obiektowo istnieją obiekty aktywne i nieaktywne. Obiekty aktywne mają niezależne wątki kontroli, które mogą być wykonywane współbieżnie z wątkami innych obiektów. Aktywne obiekty synchronizują się ze sobą, jak również z obiektami czysto sekwencyjnymi.

Trwałość

Obiekt zajmuje miejsce w pamięci i istnieje przez określony czas. W tradycyjnym programowaniu okresem życia obiektu był zwykle czas wykonania programu, który go utworzył. W plikach lub bazach danych żywotność obiektu jest dłuższa niż czas trwania procesu tworzenia obiektu. Ta właściwość, dzięki której obiekt nadal istnieje, nawet gdy jego twórca przestaje istnieć, jest nazywana trwałością.