Skillnad mellan versioner av "Kap 8 Klasser (22)"
Taifun (Diskussion | bidrag) m |
Taifun (Diskussion | bidrag) m |
||
(39 mellanliggande versioner av samma användare visas inte) | |||
Rad 1: | Rad 1: | ||
− | + | __NOTOC__ | |
− | <big>Ons 25 okt, kl 9-12</big> | + | <!-- <big>Ons 25 okt, kl 9-12</big> --> |
Rad 15: | Rad 15: | ||
<br> | <br> | ||
− | = <b><span style="color:#931136"> | + | = <b><span style="color:#931136">Kap 9 Klasser (forts.)</span></b> = |
+ | |||
+ | = <b><span style="color:#931136">9.3 Inkapsling</span></b> = | ||
<div class="ovnE"> | <div class="ovnE"> | ||
− | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: | + | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Inkapslingb.jpg]]</div> |
</div> | </div> | ||
Rad 27: | Rad 29: | ||
− | = <b><span style="color:#931136"> | + | = <b><span style="color:#931136">Inkapsling och dess problematik</span></b> = |
<div class="ovnC"> | <div class="ovnC"> | ||
− | |||
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Inkapslinga.jpg]]</div> | <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> | + | <big><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? | Hur ska privata datamedlemmar <b><span style="color:red">initieras</span></b> när de är oåtkomliga? | ||
Rad 43: | Rad 44: | ||
En av dessa metoder är <b>klassens konstruktor</b>. | En av dessa metoder är <b>klassens konstruktor</b>. | ||
− | </big> | + | </big></big> |
</div> | </div> | ||
− | = <b><span style="color:#931136"> | + | = <b><span style="color:#931136">9.4 Konstruktor</span></b> = |
<div class="border-divblue"> | <div class="border-divblue"> | ||
<big> | <big> | ||
− | <b> | + | <b>Klassens konstruktor</b> är en publik metod vars uppgift är att initiera klassens privata datamedlemmar. |
+ | |||
+ | Konstruktorn är en speciell [[Kap_8_Klasser_(22)#Konstruktorns_tre_egenskaper|<b><span style="color:blue">metod med tre egenskaper</span></b>]]. | ||
+ | |||
+ | Konstruktorn finns by default i alla klasser, men man kan även definiera den själv i klassen. | ||
− | + | Se exemplet nedan: | |
</big> | </big> | ||
</div> | </div> | ||
− | = <b><span style="color:#931136">Exempel: Klassen Circle</span></b> = | + | = <b><span style="color:#931136">Exempel: Klassen Circle med konstruktor</span></b> = |
<div class="ovnE"> | <div class="ovnE"> | ||
[[Image: CircleConstr.jpg]] | [[Image: CircleConstr.jpg]] | ||
− | |||
− | + | == <b><span style="color:#931136">Programmet Encapsulation</span></b> == | |
− | + | [[Image: Encapsulation_cpp.jpg]] | |
− | + | ||
− | [[Image: | + | |
− | <big>Klassen Circle:s datamedlem <b><span style="color:red"> | + | <big>Klassen Circle:s datamedlem <b><span style="color:red">radie</span></b> är oåtkomlig här p.g.a. å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. | 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> | </big> | ||
− | === <b><span style="color:#931136"> | + | |
− | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: | + | === <b><span style="color:#931136">Körexempel</span></b> === |
+ | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: EncapsKorex.jpg]]</div> | ||
</div> | </div> | ||
= <b><span style="color:#931136">Konstruktorns tre egenskaper</span></b> = | = <b><span style="color:#931136">Konstruktorns tre egenskaper</span></b> = | ||
− | <div class=" | + | <div class="ovnC"> |
<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: KonstrEgenskapera.jpg]]</div> | ||
</div> | </div> | ||
Rad 85: | Rad 88: | ||
= <b><span style="color:#931136">Default konstruktorn</span></b> = | = <b><span style="color:#931136">Default konstruktorn</span></b> = | ||
− | <div class=" | + | <div class="ovnA"> |
<big><big> | <big><big> | ||
− | Alla klasser i C | + | Alla klasser i C++ har automatiskt en <b>default konstruktor</b>. |
− | + | ||
− | + | ||
Default konstruktorn sätts ur funktion endast om man definierar en egen konstruktor. | Default konstruktorn sätts ur funktion endast om man definierar en egen konstruktor. | ||
</big></big> | </big></big> | ||
+ | |||
+ | |||
+ | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Default_konstr.jpg]]</div> | ||
+ | |||
+ | |||
+ | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Default_konstr_2.jpg]]</div> | ||
</div> | </div> | ||
Nuvarande version från 1 mars 2025 kl. 18.44
<< Agenda | Genomgång 22 | Övningar 22 | Planering | Nästa lektion >> |
Kap 9 Klasser (forts.)
9.3 Inkapsling
Åtkomstmodifieraen private
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.
9.4 Konstruktor
Klassens konstruktor är en publik metod vars uppgift är att initiera klassens privata datamedlemmar.
Konstruktorn är en speciell metod med tre egenskaper.
Konstruktorn finns by default i alla klasser, men man kan även definiera den själv i klassen.
Se exemplet nedan:
Exempel: Klassen Circle med konstruktor
Programmet Encapsulation
Klassen Circle:s datamedlem radie är oåtkomlig här p.g.a. åtkomstmodifieraren private.
Men vi kan initiera den med input via den publika metoden Circle() dvs klassens konstruktor.
Körexempel
Konstruktorns tre egenskaper
Default konstruktorn
Alla klasser i C++ har automatiskt en default konstruktor.
Default konstruktorn sätts ur funktion endast om man definierar en egen konstruktor.
Gå vidare till: när du är klar med denna genomgång.
Copyright © 2023. All Rights Reserved.