Atšķirība starp klasēm un struktūrām

Klases vs konstrukcijas

Daži no Object Oriented (OO) programmēšanas valodu pamatjēdzieniem ir iekapsulēšana, pārmantojamība un polimorfisms. Klase un struktūra ir divi no OO konstrukcijām / rīkiem, kas palīdz programmētājiem sasniegt šīs koncepcijas lielākajā daļā esošo OO programmēšanas valodu (Java nenodrošina struktūras). Klases ir abstrakts reālās pasaules objektu attēlojums. Struktūras ir ļoti līdzīgas klasēm ar līdzīgu lietojumu, taču tām ir maz ierobežojumu, salīdzinot ar klasēm. Gan klases, gan struktūra tiek izmantota, lai grupētu līdzīga veida datus kopā.

Kas ir klases?

Klases attēlo abstraktu reālās pasaules objektu attēlojumu, savukārt attiecības attēlo, kā katra klase ir savienota ar citiem. Gan klasēm, gan attiecībām ir īpašības, ko sauc par atribūtiem. Klases metodes atspoguļo vai nosaka šo klašu izturēšanos. Nodarbību metodes un atribūtus sauc par klases dalībniekiem. Parasti iekapsulēšana tiek panākta, padarot atribūtus privātus, vienlaikus izveidojot publiskas metodes, kuras var izmantot, lai piekļūtu šiem atribūtiem. Objekts ir klases piemērs. Mantojums ļauj lietotājam paplašināt klases (sauktas par apakšklasēm) no citām klasēm (ko sauc par superklases). Polimorfisms ļauj programmētājam aizstāt klases objektu tās superklases objekta vietā. Parasti problēmas definīcijā atrodamie lietvārdi programmā tieši kļūst par klasēm. Un līdzīgi darbības vārdi kļūst par metodēm. Nodarbībās parasti tiek izmantoti publiski, privāti un aizsargāti piekļuves pārveidotāji. Klases diagramma parāda sistēmu klases, attiecības starp klasēm un to atribūtus.

Kas ir struktūras?

Kā minēts iepriekš, struktūras ir ļoti līdzīgas klasēm ar līdzīgu lietojumu, taču tām ir nedaudz ierobežotas iespējas nekā klasēm. Faktiski klases var uzskatīt par paplašinājumu konstrukcijām. Piemēram, struktūras ir tādas pašas kā klases C ++, taču tām pēc noklusējuma ir sabiedrības locekļi. Lietotājs var definēt struktūru, kas attēlo saliktu tipu. Līdzīgi kā klases, struktūras satur locekļus, kas var piederēt daudziem veidiem. Atslēgvārds struct tiek izmantots, lai definētu struktūru C un C ++, savukārt atslēgvārds Struktūra tiek izmantots .NET programmēšanas valodās..

Kāda ir atšķirība starp klasēm un struktūrām?

Pat ja gan klases, gan struktūras ir līdzīgas konstrukcijas, kas atrodamas programmēšanas valodās, tām ir smalkas atšķirības. Parasti klase ir struktūras paplašinājums, un tāpēc struktūrām ir daži relatīvi ierobežojumi. Piemēram, struktūras var uzskatīt par tādām pašām kā klases klasē C ++, bet dalībnieki pēc noklusējuma klasēs nav atšķirīgi (atšķirībā no struktūrām). Tas faktiski nozīmē, ka jūs varat definēt klasi un struktūru ar tieši tādiem pašiem parametriem, izmantojot atbilstošos piekļuves pārveidotājus C ++. Tomēr C struktūrā struktūras nedrīkst saturēt nekādas funkcijas vai pārslogotas operācijas. Atslēgas vārdi class un struct tiek izmantoti, lai attiecīgi definētu klasi un struktūru C ++. Runājot par .NET valodām (C #, VB.NET utt.), Klase ir atsauces tips, savukārt struktūra ir vērtības tips. Parasti struktūras tiek izmantotas mazākiem objektiem, bet klases tiek izmantoti lielākiem objektiem, kas ilgāk tiek saglabāti atmiņā.