Kap 1 Objektorienterad programmering (forts.)
<< Agenda | Innehåll & struktur | Genomgång | Dagens övningar | Nästa lektion >> |
1.4 Användning av klasser
1. Deklaration av en klass
2. Definition av ett objekt
3. Åtkomst till objektets medlemmar
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.
Klassen CircleD med default konstruktor
class skapar automatiskt en default konstruktor som inte har någon parameter: class().
Default konstruktorn initierar klassens datamedlemmar till defaultvärden.
Defaultvärdena är beroende av medlemmarnns datatyper: Taltypernas defaultvärde är 0.
String:s defaultvärde är " ". Referensernas defaultvärde är null osv.
Programmet EncapsulationD
Klassen CircleD:s datamedlem radius är fortfarande oåtkomlig här pga private.
Alla objekt måste skapas genom att anropa en konstruktor vare sig default eller egendefinierad.
Ett körexempel
Flera konstruktorer: Klassen Account
Datamedlemmarna har ingen explicit åtkomstmodifierare, varken private eller public.
Men de är ändå private by default pga klassens inkapslingsegenskap.
De kan initieras endast via de publika konstruktorerna när ett objekt skapas.
Programmet CreateAccount
"Ompekning" därför att samma referens myAccount används för att peka på det andra objektet.
S.k. Garbage collector rensar automatiskt det första, numera orefererade objektets minnesutrymme.
Ompekning motsvarar överskrivning av variablers värden hos variabler av enkel datatyp.
Ett körexempel
Copyright © 2022 TechPages AB. All Rights Reserved.