Класове срещу структури
Някои от основните концепции на обектно ориентираните езици за програмиране са капсулиране, наследяване и полиморфизъм. Клас и структура са две от OO конструкциите / инструментите, които помагат на програмистите да постигнат тези концепции в рамките на повечето от съществуващите OO езици за програмиране (Java не предоставя структури). Класовете са абстрактно представяне на обекти от реалния свят. Структурите са много подобни на класове със сходна употреба, но имат малко ограничения в сравнение с класовете. И класовете, и структурата се използват за групиране на сходен тип данни, заедно.
Какво представляват класовете?
Класовете изобразяват абстрактното представяне на обекти от реалния свят, докато отношенията изобразяват как всеки клас е свързан с другите. И класовете, и отношенията имат свойства, наречени атрибути. Методите в класовете представляват или дефинират поведението на тези класове. Методите и атрибутите на класовете се наричат членовете на класа. Обикновено капсулирането се постига, като атрибутите станат частни, като същевременно се създадат публични методи, които могат да се използват за достъп до тези атрибути. Обект е инстанцията на клас. Наследяването позволява на потребителя да разширява класове (наречени подкласове) от други класове (наречени суперкласове). Полиморфизмът позволява на програмиста да замести обект от клас вместо обект от неговия суперклас. Обикновено съществителните, намиращи се в определението на проблема, директно стават класове в програмата. И по същия начин глаголите се превръщат в методи. Публични, частни и защитени са типичните модификатори за достъп, използвани за класовете. Класова схема показва класовете на системите, връзките между класовете и техните атрибути.
Какво представляват структурите?
Както бе споменато по-горе, структурите са много подобни на класове с подобно използване, но са с малко ограничени възможности в сравнение с класовете. Всъщност класовете могат да се разглеждат като разширение към структурите. Например структурите са същите като класове в C ++, но те имат обществени членове по подразбиране. Структурата може да бъде определена от потребителя, за да представи тип, който е композитен. Подобно на класовете, структурите съдържат членове, които могат да принадлежат към много типове. Ключовата структура се използва за дефиниране на структура в C и C ++, докато структурата на ключовите думи се използва за същата в езиците за програмиране .NET.
Каква е разликата между класове и структури?
Въпреки че и класовете, и структурите са сходни конструкции, открити в езиците за програмиране, те имат фини разлики. Обикновено класът е разширение на структурата и следователно структурите имат някои относителни ограничения. Например структурите могат да се считат за същите като класове в C ++, но по подразбиране членовете не са публични в класовете (за разлика от структурите). Това всъщност означава, че можете да дефинирате клас и структура с абсолютно същите характеристики, като използвате подходящите модификатори за достъп в C ++. Въпреки това в C структурите не могат да съдържат никакви функции или претоварени операции. Ключовите думи клас и структура се използват за определяне на клас и структура съответно в C ++. Когато става въпрос за езици .NET (C #, VB.NET и т.н.), класът е референтен тип, докато структурата е тип стойност. И обикновено структурите се използват за по-малки обекти, но класовете се използват за по-големи обекти, които се съхраняват в паметта за по-дълги периоди.