Zajęcia z programowania. Rodzaje klas w językach programowania

Klasa w programowaniu to zgrupowanie danych, pól i funkcji lub metod. Wszystkie one są nazywane zmiennymi, metodami lub funkcjami. Program jest zbudowany z zestawu klas. Po jego zdefiniowaniu i zaimplementowaniu jego elementy można deklarować podobnie jak zmienne językowe z typów prymitywnych "int", "double" i "String".

Krótka historia języka programowania

Krótka historia języka programowania

SIMULA była pierwszym językiem obiektowym, służyła do tworzenia symulacji. Alan Kay, który był wtedy na Uniwersytecie w Utah, polubił ten język, ponieważ można go było potencjalnie zastosować do komputer osobisty z myślą o implementacji aplikacji zorientowanych graficznie. Zasugerował, że język taki jak SIMULA byłby dobrym sposobem na tworzenie programów przez początkujących i podzielił się swoją wizją z Xerox Parc. Na początku lat 70. zespół kierowany przez Alana Kaye`a stworzył pierwszy komputer PC o nazwie Dynabook z obiektowym językiem Smalltalk, który istnieje do dziś, choć nie jest szeroko stosowany komercyjnie.

Pomysł programowanie zorientowane obiektowo (OOP) został opracowany w latach 70. XX wieku, a na początku lat 80. Bjorn Straustrup włączył go do języka C, który stał się znany jako "C ++" - pierwszy język zorientowany obiektowo (OLO), który był szeroko stosowany komercyjnie.

Na początku lat 90. grupa w firmie Sun, kierowana przez Jamesa Goslinga, opracowała prostszą wersję C ++ o nazwie Java. Który miał stać się językiem dla aplikacji wideo na żądanie. Ten projekt programowania w Javie od podstaw nigdy nie został zrealizowany. Grupa została zmuszona do ponownego skupienia swojej uwagi na rozwoju język dla Aplikacje internetowe. W miarę rozwoju Internetu stawał się on coraz bardziej popularny, choć jego penetracja rynku była raczej skromna ze względu na postrzeganą nieefektywność.

Modelowanie zorientowane obiektowo

Klasy i obiekty są dwoma z kilku kluczowych elementów składowych OOP. Są one używane do modelowania zachowania i enkapsulacji. W świecie rzeczywistym można znaleźć wiele pojedynczych obiektów tego samego typu. Na przykład, istnieją tysiące rowerów tej samej marki i modelu. Każdy z nich został zbudowany z tego samego zestawu i dlatego zawiera jednakowe elementy. W kategoriach OO oznacza to, że rower jest instancją klasy obiektów znanych jako rowery. To jest tak proste jak to. Klasa w językach programowania to schemat tworzenia konkretnych obiektów. Na przykład, Bicycle jest jedną z możliwych implementacji.

Modelowanie zorientowane obiektowo

Można zauważyć, że klasa Bicycle nie zawiera "główna" metoda. Bo nie stanowi on kompletnego wniosku, a jedynie plan dla rowerów. Odpowiedzialność za tworzenie i używanie nowych obiektów Bicycle należy do innej klasy w programowaniu. Demo roweru to takie, które tworzy dwa oddzielne obiekty roweru i wywołuje ich metody.

Rower wywołuje metody

Wynik tego testu pokazuje docelową prędkość i przełożenie dla dwóch rowerów.

Podstawowe pojęcia

Zmienna to nazwa z wartością, którą można zmieniać w całym programie. Zgodnie z zawartymi w nich informacjami, dzieli się je na 2 lub więcej rodzajów w zależności od używanego języka. Ogólnie rzecz biorąc, istnieją 2 rodzaje klasyfikacji:

  1. Zmienne typów pierwotnych. Są one zdefiniowane przez pojedynczą wartość - liczbę całkowitą, zmiennoprzecinkową, znak lub znak logiczny.
  2. Zmienne referencyjne to nazwy bardziej złożonych informacji: tablic lub obiektów pewnej klasy.

Kluczem do OOP jest zapobieganie nieprawidłowym informacjom, ponieważ zmienne nie zostały poprawnie zainicjowane. Aby poprawnie zdefiniować obiekty, musisz użyć konstruktora metody, która jest uruchamiana automatycznie przy każdym tworzeniu obiektu. Ich głównym zadaniem jest rezerwowanie pamięci, wykonywanie inicjalizacji zmiennych członkowskich klasy w programowaniu. Nie mają one wartości zwrotnej "void", a ich nazwa jest taka sama jak nazwa grupy generycznej. Jego domyślnym argumentem jest obiekt, który jest tworzony.

Klasy i obiekty w języku Python

Python odwołuje się do OO języki programowania, tym samym różni się od zorientowanej na procedury, gdzie nacisk kładziony jest na funkcje, jest oparta na obiektach. Obiekt to zbiór danych i funkcji, które na nim działają. Klasa jest wzorem dla obiektu. Możesz myśleć o klasie jak o szkicu (prototypie) domu. Zawiera wszystkie szczegóły dotyczące podłóg, drzwi, okien i innych konstrukcji. Z tych opisów budujesz dom, który jest obiektem.

Klasy i obiekty w języku Python

Obiekt to po prostu zbiór danych i metod (funkcji), które działają na tych danych. Klasa jest planem obiektu. Możesz myśleć o klasie jak o szkicu (prototypie) domu. Zawiera wszystkie szczegóły dotyczące podłóg, drzwi, okien i innych konstrukcji. Na podstawie tych opisów zbuduj dom, który jest obiektem.

Tak jak z opisu można zrobić wiele domów, tak z jednej grupy można stworzyć wiele obiektów. Nazywa się ją również instancją. Co mamy na końcu? Ten proces demonstruje pojęcie instancji klasy i jej tworzenie. Tak jak definicje funkcji zaczynają się od słowa kluczowego "def", Python definiuje grupę za pomocą "class". Pierwsza linia nosi nazwę "docstring" i zawiera krótki opis klasy.

Klasa tworzy nową lokalną przestrzeń nazw, gdzie zdefiniowane są wszystkie jego atrybuty, mogą to być dane lub funkcje. Ma też specjalne, które zaczynają się od podwójnego podkreślenia (__). Na przykład, "__doc__" daje ciąg dokumentu tej klasy w programowaniu.

Po jego zdefiniowaniu tworzony jest nowy obiekt o tej samej nazwie. Umożliwia dostęp do różnych atrybutów oraz tworzenie nowych obiektów tej klasy.

Nowe obiekty tej klasy

Słowo kluczowe "klasa"

Python to doskonały język, który wspiera OOP. Oferuje kilka zalet w porównaniu z innymi językami, takimi jak Java, C ++ lub R. Jest to dynamiczny język z wysokopoziomowymi typami danych, więc rozwój jest znacznie szybszy niż w Javie czy C ++. Programista nie musi deklarować typów zmiennych i argumentów. To również ułatwia początkującym zrozumienie i naukę Pythona, jego kod jest bardziej czytelny i intuicyjny.

Aby zdefiniować klasę w Pythonie, można zastosować słowo kluczowe "class", po którym następuje nazwa i dwukropek. Wewnątrz jego "__init__" metoda musi być zdefiniowana z "def". Jest to inicjator, który może być później zastosowany do tworzenia obiektów, musi być zawsze obecny. Jest to podobne do konstruktora w Javie.

Wymagany jest jeden argument "self", który odnosi się do samego obiektu. Wewnątrz metody używane jest słowo kluczowe "pass" i stosowane jest odpowiednie wcięcie. "Self" w Pythonie jest równoważny z "tym" w C ++ lub klasami w Javie. W tym przypadku istnieje w większości pusty "Pies", ale nie ma jeszcze obiektu. Klasa ma dokładną specyfikację, jak plan lub szablon. Ustalają oni umowę z klasą.

Podział widoku

Klasę można podzielić na dwie części:

  1. Nagłówek klasy, który składa się ze słowa kluczowego "klasa" a imię, które mu nadasz. Nazwy w językach programowania są również znane jako identyfikatory.
  2. Bryła, która składa się z pary otwieranych/zamykanych nawiasów falistych z elementami pomiędzy nimi.

Oto szablon kodu źródłowego klasy:

klasa

{

...

}

Kiedy klasa jest napisana, jest zastępowana przez nazwę. W skład korpusu wchodzą jeden lub z kilku elementów, linia oznacza dowolną liczbę poprzedzających ją części. W szczególności słowo kluczowe "klasa" powinien zaczynać się w pierwszej kolumnie wiersza, po czym następuje reszta informacji z nagłówka - w najprostszym przypadku identyfikator.

Otwarty nawias falisty ogranicza nagłówek i rozpoczyna główną część klasy. Niektórzy programiści lubią umieszczać go na końcu linii, ale większość lubi go w osobnej linii. Nawias klamrowy zamyka ciało klasy. Zwykłą praktyką jest umieszczanie nawiasu zamykającego w kolumnie osobno.

Zbiór elementów

Zawartość ciała klasy składa się z kolekcji elementów. Członki zmiennych, zwane polami, oraz części, które wykonuje, oznaczane metodami zwanymi też procedurami.

Treść musi być wcięta co najmniej o dwie kolumny. Wielu programistów robi je po cztery kolumny naraz, aby ułatwić czytanie kodu źródłowego. Liczba nie ma znaczenia, ale musi być zgodna z dowolnie wybraną kwotą.

Należy przestrzegać jeszcze jednej zasady: identyfikatory klas muszą zaczynać się wielką literą, podobnie jak każde nowe słowo w nich zawarte.

Klasy składają się z elementów. Członkami są albo pola albo metody. Każdy program musi mieć specjalną metodę o nazwie "main". Jeśli połączysz kod źródłowy, otrzymasz szablon minimalnej aplikacji.

Jest to de-facto standard, w którym nazwy zaczynają się wielką literą, podobnie jak dodatkowe słowa w niej występujące. Na przykład: myClass pasuje, ale myClass i myclass nie. Identyfikator klasy musi być również nazwą pliku, do którego wprowadzany jest kod źródłowy. Musi mieć rozszerzenie ".java".

Słowa kluczowe

Słowa kluczowe klasy w Javie to słowa zarezerwowane jako podstawowe bloki konstrukcyjne języka. Nie należy ich używać do nazw tworzonych obiektów. Takie jak identyfikatory klas, pól i metod. Kompilator rozpoznaje te słowa i traktuje je jako specjalne.

Słowa kluczowe

Podczas uruchamiania aplikacji Java stosowane jest polecenie "java", które uruchamia maszynę JVM i określa plik klasy do uruchomienia. Proces rozpoczyna się od specjalnej metody, którą użytkownik definiuje jako "główną" metodę aplikacji. Ta konwencja jest tradycją programowania w Javie od podstaw, odziedziczoną po " C ".

Kod źródłowy "main" () zawsze wygląda coś takiego

public static void main (String[ ] identyfikator)

{

...

}

Klucz "public" i "static" jako specjalne modyfikatory do znalezienia "main" zostały znalezione i są dostępne. Identyfikatorem może być cokolwiek, ale w dużej mierze standard używa nazwy "arg", która jest skrótem od arguments.

Konstruktor klasy Java

"Klasa" można rozumieć jako prototyp, który definiuje zmienne i metody wspólne dla danego typu instancji, określa wszystko, co charakteryzuje i może tworzyć jedną lub więcej instancji. Ustawia zmienne i metody wspólne dla instancji tego typu tworzone przez klasę, ale wtedy każda będzie miała swoje wartości: wzór, kolor i przepis.

W Javie, klasa jest najpierw tworzona zanim mogą być tworzone jej instancje. Obiekt staje się instancją klasy. Zawiera atrybuty i metody, podczas tworzenia należy określić typy, metody, funkcje i nazwy atrybutów, a także typ danych, nazwy i inne parametry, z których korzystają.

Podstawowa struktura wygląda następująco.

Podstawowa struktura klas w Javie

W JavaScript tworzona jest klasa o nazwie "MyClass", która ma w sumie trzy atrybuty, z których wszystkie są prywatne: "String", "int" i "float".

Zmienna graniczna

Klasy sklepu C służą do opisu funkcji zmiennej. Należą do nich przede wszystkim scope, visibility i lifetime, które pomagają śledzić istnienie danej zmiennej w czasie biegu.

Język C używa 4 klas przechowywania. Mianowicie:

  1. Auto - ustawiane domyślnie dla wszystkich zmiennych zadeklarowanych wewnątrz funkcji lub bloku klasy w C. W związku z tym słowo kluczowe "auto" jest rzadko używane podczas pisania programów w C. Zmienne automatyczne mogą być dostępne tylko wewnątrz bloku/funkcji, w której zostały zadeklarowane, a nie poza nią, co określa ich zakres. Oczywiście, mogą być one dostępne zagnieżdżone wewnątrz bloku/funkcji nadrzędnej, w której została zadeklarowana zmienna automatyczna. Można jednak uzyskać do nich dostęp także poza ich zakresem, określając bardzo precyzyjnie miejsce w pamięci, w którym się znajdują.
  2. Zewnętrzna, gdy zmienna jest zdefiniowana w innym miejscu niż to, w którym jest używana. Zazwyczaj w jednym bloku przypisywana jest wartość, która może być nadpisana w innym bloku. Tak więc "extern" to nic innego jak zmienna globalna, zainicjowana poprawną wartością, gdzie jest zadeklarowana do użycia w innym miejscu.
  3. Static, służy do deklarowania zmiennych statycznych, które są szeroko stosowane podczas pisania klas w C. Mają tendencję do zachowywania swojej wartości nawet po wypadnięciu z obiegu. Możemy więc powiedzieć, że są one inicjalizowane tylko raz i istnieją aż do zakończenia programu; nie są one przydzielane nowej pamięci, ponieważ nie są ponownie deklarowane, a ich zakres zależy od funkcji, dla której zostały zdefiniowane. Globalne zmienne statyczne mogą być dostępne w dowolnym miejscu programu. Kompilator przypisuje im domyślną wartość 0.
  4. Rejestr, deklaruje zmienne, które mają taką samą funkcjonalność jak automaty. Jedyna różnica polega na tym, że kompilator próbuje zapisać je w mikroprocesorze, jeśli dostęp jest wolny. To sprawia, że użycie jest znacznie szybsze niż w pamięci podczas runtime. Jeśli wolny rejestr nie jest dostępny, są one przechowywane tylko w pamięci. Zazwyczaj kilka zmiennych, do których trzeba mieć częsty dostęp w programie, jest zadeklarowanych ze słowem kluczowym "register", co poprawia runtime.

Składnia: storage class var_data_type variable_name.

Składnia: storage class

Tajniki programowania

Poniższe wskazówki nie mają być wyczerpujące i mają na celu właściwe wykorzystanie wzorców projektowych programowania obiektowego:

  1. Unikaj klas omnibusowych w Pythonie.
  2. Używaj znaczących nazw.
  3. Podczas tworzenia klasy lub refaktoryzacji istniejącego kodu, programista powinien sporządzić listę wszystkich zadań, i wymyślić nazwę.
  4. Stosując OOP, znacznie łatwiej jest wymyślić znaczące nazwy, ponieważ sam wzorzec projektowy często definiuje rodzaj odpowiedzialności.
  5. Nazwa klasy musi zaczynać się wielką literą. Jeśli nazwa jest słowem złożonym lub kilkoma słowami, pierwsza litera każdego słowa musi być wielka. Przykład: klasa Study, klasa StudyTonight itd.
  6. Klasy zawierają członków danych i funkcje członkowskie. A dostęp do tych elementów i zmiennych zależy od specyfikatorów.
  7. Pojęcie członków klasy. Co to znaczy? Klasa w C ++ jest podobna do struktur w C. Jedyna różnica polega na tym, że domyślnie używa prywatnej kontroli dostępu, a struktura jest publiczna.
  8. Wszystkie funkcje OOPS obracają się wokół klas w C - dziedziczenie, enkapsulacja, abstrakcja i inne.
  9. Obiekty zawierają pojedyncze kopie członków danych.
  10. Możesz stworzyć tyle obiektów, ile potrzebujesz.

Obiekt posiada indywidualne zmienne. Są one inicjowane za pomocą specjalnych funkcji klasowych zwanych konstruktorami. A kiedy obiekt opuszcza zakres, inna specjalna funkcja, zwana Destruktorem, jest wywoływana w celu zwolnienia pamięci zarezerwowanej przez obiekt. C+ nie ma automatycznego zbieracza śmieci jak JAVA, ale Destructor wykonuje to zadanie.

Każdy obiekt ma inne zmienne

Artykuł pisze prostym językiem o klasach w programowaniu. Mamy nadzieję, że zrozumieliście materiał. Znajomość zasad działania języków obiektowych jest niezbędna do stworzenia udanej aplikacji. Dobra architektura to pieniądze zaoszczędzone na szkoleniach, utrzymaniu, testach, łataniu, rozszerzaniu i skalowaniu kodu źródłowego. Wymaga to więcej czasu i staranności w początkowej fazie rozwoju, ale szybko zwraca inwestycję z dużym zainteresowaniem. Nieuniknione jest, że nawet najlepiej zaprojektowane architektury muszą być czasowo korygowane i refaktoryzowane.

Artykuły na ten temat