Klasy a struktury
Niektóre z głównych koncepcji języków programowania obiektowego (OO) to enkapsulacja, dziedziczenie i polimorfizm. Klasa i struktura to dwa konstrukty / narzędzia OO, które pomagają programistom osiągnąć te koncepcje w większości istniejących języków programowania OO (Java nie zapewnia struktur). Klasy są abstrakcyjną reprezentacją obiektów świata rzeczywistego. Struktury są bardzo podobne do klas o podobnym zastosowaniu, ale mają kilka ograniczeń w porównaniu do klas. Zarówno klasy, jak i struktura służą do grupowania podobnego rodzaju danych.
Jakie są klasy?
Klasy przedstawiają abstrakcyjną reprezentację obiektów świata rzeczywistego, a relacje pokazują, w jaki sposób każda klasa jest połączona z innymi. Zarówno klasy, jak i relacje mają właściwości zwane atrybutami. Metody w klasach reprezentują lub definiują zachowanie tych klas. Metody i atrybuty klas nazywane są członkami klasy. Zazwyczaj hermetyzacja jest osiągana przez uczynienie atrybutów prywatnymi, przy jednoczesnym utworzeniu metod publicznych, których można użyć do uzyskania dostępu do tych atrybutów. Obiekt jest instancją klasy. Dziedziczenie pozwala użytkownikowi rozszerzać klasy (zwane podklasami) z innych klas (zwanych superklasami). Polimorfizm pozwala programiście podstawić obiekt klasy w miejsce obiektu jego superklasy. Zazwyczaj rzeczowniki znalezione w definicji problemu stają się bezpośrednio klasami w programie. Podobnie czasowniki stają się metodami. Publiczne, prywatne i chronione to typowe modyfikatory dostępu używane w klasach. Diagram klas pokazuje klasy systemów, relacje między klasami i ich atrybuty.
Jakie są struktury?
Jak wspomniano powyżej, struktury są bardzo podobne do klas o podobnym zastosowaniu, ale mają nieco ograniczone możliwości niż klasy. W rzeczywistości klasy można uznać za rozszerzenie struktur. Na przykład struktury są takie same jak klasy w C ++, ale domyślnie mają członków publicznych. Struktura może być zdefiniowana przez użytkownika do reprezentowania typu złożonego. Podobnie jak klasy, struktury zawierają elementy, które mogą należeć do wielu typów. Słowo kluczowe struct służy do definiowania struktury w C i C ++, podczas gdy słowo kluczowe Struktura jest używane do tego samego w językach programowania .NET.
Jaka jest różnica między klasami a strukturami?
Chociaż zarówno klasy, jak i struktury są podobnymi konstrukcjami występującymi w językach programowania, mają one subtelne różnice. Zazwyczaj klasa jest rozszerzeniem struktury, a zatem struktury mają pewne względne ograniczenia. Na przykład struktury mogą być traktowane tak samo jak klasy w C ++, ale członkowie nie są domyślnie publicznie w klasach (w przeciwieństwie do struktur). Oznacza to, że możesz zdefiniować klasę i strukturę o dokładnie takich samych właściwościach, używając odpowiednich modyfikatorów dostępu w C ++. Jednak w C struktury nie mogą zawierać żadnych funkcji ani przeciążonych operacji. Klasa słowa kluczowego i struktura są używane do definiowania klasy i struktury odpowiednio w C ++. Jeśli chodzi o języki .NET (C #, VB.NET itp.), Klasa jest typem odniesienia, a struktura jest typem wartości. I zwykle struktury są używane dla mniejszych obiektów, ale klasy są używane dla większych obiektów, które są przechowywane w pamięci przez dłuższy czas.