Skillnad mellan versioner av "Kap 8 Klasser (22)"
Taifun (Diskussion | bidrag) m |
Taifun (Diskussion | bidrag) m |
||
Rad 36: | Rad 36: | ||
− | |||
− | |||
− | |||
− | |||
− | + | = <b><span style="color:#931136">1.5 Klassens konstruktor</span></b> = | |
− | </ | + | <div class="ovnC"> |
+ | === <b><span style="color:#931136">Inkapsling och dess problematik</span></b> === | ||
+ | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Inkapslinga.jpg]]</div> | ||
− | < | + | <big><b><span style="color:red">Problem:</span></b> |
+ | Hur ska privata datamedlemmar <b><span style="color:red">initieras</span></b> när de är oåtkomliga? | ||
− | + | <b><span style="color:red">Lösningen:</span></b> | |
− | + | ||
+ | Man använder publika metoder för att via dem komma åt klassens privata datamedlemmar. | ||
− | + | En av dessa metoder är <b>klassens konstruktor</b>. | |
− | + | ||
− | + | </big> | |
+ | </div> | ||
− | + | = <b><span style="color:#931136">Vad är konstruktorn?</span></b> = | |
+ | <div class="border-divblue"> | ||
+ | <big> | ||
+ | <b>Konstruktorn</b> är en speciell [[Kap_1_Objektorienterad_programmering_(forts.)#Konstruktorns_tre_egenskaper|<b><span style="color:#931136">metod med tre egenskaper</span></b>]] vars uppgift är att initiera klassens privata datamedlemmar. | ||
− | + | Konstruktorn finns by default i alla klasser, men kan även skrivas i klassen. Se exemplet nedan. | |
+ | </big> | ||
+ | </div> | ||
− | |||
− | + | = <b><span style="color:#931136">Exempel: Klassen Circle</span></b> = | |
+ | <div class="ovnE"> | ||
+ | [[Image: CircleKonstr.jpg]] | ||
+ | </div> | ||
− | |||
− | + | = <b><span style="color:#931136">Åtkomstmodifieraren private</span></b> = | |
+ | <div class="ovnC"> | ||
+ | === <b><span style="color:#931136">Programmet Encapsulation</span></b> === | ||
+ | [[Image: Encapsulation.jpg]] | ||
− | den | + | |
− | </big></ | + | <big>Klassen Circle:s datamedlem <b><span style="color:red">radius</span></b> är oåtkomlig här pga åtkomstmodifieraren <b><span style="color:red">private</span></b>. |
+ | |||
+ | Men vi kan initiera den med <b><span style="color:red">input</span></b> via den publika metoden <b><span style="color:red">Circle()</span></b> dvs klassens konstruktor. | ||
+ | </big> | ||
+ | === <b><span style="color:#931136">Ett körexempel</span></b> === | ||
+ | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: CircleKorexa.jpg]]</div> | ||
</div> | </div> | ||
− | = <b><span style="color:#931136"> | + | = <b><span style="color:#931136">Konstruktorns tre egenskaper</span></b> = |
− | <div class=" | + | <div class="border-divblue"> |
− | + | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: KonstrEgenskapera.jpg]]</div> | |
− | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: | + | </div> |
+ | = <b><span style="color:#931136">Default konstruktorn</span></b> = | ||
+ | <div class="border-divblue"> | ||
<big><big> | <big><big> | ||
− | + | Alla klasser i C# har automatiskt en <b>default konstruktor</b> som | |
− | + | ||
− | + | initierar klassens datamedlemmar till <b>default värden</b>. | |
− | + | ||
− | + | Default konstruktorn sätts ur funktion endast om man definierar en egen konstruktor. | |
− | + | </big></big> | |
− | + | ||
</div> | </div> | ||
− | |||
− | |||
− | |||
− | |||
Versionen från 23 oktober 2023 kl. 09.38
Ons 25 okt, kl 9-12
<< Agenda | Genomgång 22 | Övningar 22 | Planering | Nästa lektion >> |
8.3 Inkapsling
Åtkomstmodifieraen private
+++
Programmet All_in_main() utan modularisering
Programmet är varken proceduralt eller objektorienterat.
Vi ska modularisera programmet på olika nivåer. Det gör i två steg:
1.5 Klassens konstruktor
Inkapsling och dess problematik
Problem:
Hur ska privata datamedlemmar initieras när de är oåtkomliga?
Lösningen:
Man använder publika metoder för att via dem komma åt klassens privata datamedlemmar.
En av dessa metoder är klassens konstruktor.
Vad är konstruktorn?
Konstruktorn är en speciell metod med tre egenskaper vars uppgift är att initiera klassens privata datamedlemmar.
Konstruktorn finns by default i alla klasser, men kan även skrivas i klassen. Se exemplet nedan.
Exempel: Klassen Circle
Åtkomstmodifieraren private
Programmet Encapsulation
Klassen Circle:s datamedlem radius är oåtkomlig här pga åtkomstmodifieraren private.
Men vi kan initiera den med input via den publika metoden Circle() dvs klassens konstruktor.
Ett körexempel
Konstruktorns tre egenskaper
Default konstruktorn
Alla klasser i C# har automatiskt en default konstruktor som
initierar klassens datamedlemmar till default värden.
Default konstruktorn sätts ur funktion endast om man definierar en egen konstruktor.
Copyright © 2023. All Rights Reserved.