Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C# Erfelijkheid Beheersen: Herbruikbare, Onderhoudbare Code Bouwen

Erfelijkheid is een van de belangrijkste concepten in OOP. Het stelt je in staat een klasse te definieren in termen van een andere klasse, wat creatie en onderhoud vergemakkelijkt, code herbruikbaar maakt en implementatie versnelt.

In plaats van volledig nieuwe leden te schrijven, geef je aan dat de nieuwe klasse leden erf van een bestaande klasse. De bestaande klasse heet basisklasse, de nieuwe afgeleide klasse.

Erfelijkheid implementeert de IS-EEN relatie: zoogdier IS-EEN dier, hond IS-EEN zoogdier → hond IS-EEN dier.

Basis- en Afgeleide Klassen

Een klasse kan van meerdere klassen/interfaces erven.

Syntaxis:

<toegangsspecificatie> class <basisklasse> { ... }
class <afgeleideklasse> : <basisklasse> { ... }

Voorbeeld: Vorm en Rechthoek

using System;

namespace ErfelijkheidsApplicatie {
    class Vorm {
        public void StelBreedteIn(int w) { breedte = w; }
        public void StelHoogteIn(int h) { hoogte = h; }
        protected int breedte, hoogte;
    }
    class Rechthoek : Vorm {
        public int KrijgOppervlakte() { return breedte * hoogte; }
    }
    class RechthoekTester {
        static void Main(string[] args) {
            Rechthoek r = new Rechthoek();
            r.StelBreedteIn(5);
            r.StelHoogteIn(7);
            Console.WriteLine("Totale oppervlakte: {0}", r.KrijgOppervlakte());
            Console.ReadKey();
        }
    }
}

Uitvoer: Totale oppervlakte: 35

Basisklasse Initialiseren

De afgeleide klasse erf lidvariabelen en -methodes. Basisklasse-object moet eerst gemaakt worden. Initialisatie via member initialization list.

Voorbeeld: Tafelblad erft van Rechthoek

using System;

namespace RechthoekApplicatie {
    class Rechthoek {
        protected double lengte, breedte;
        public Rechthoek(double l, double w) { lengte = l; breedte = w; }
        public double KrijgOppervlakte() { return lengte * breedte; }
        public void Toon() {
            Console.WriteLine("Lengte: {0}", lengte);
            Console.WriteLine("Breedte: {0}", breedte);
            Console.WriteLine("Oppervlakte: {0}", KrijgOppervlakte());
        }
    }
    class Tafelblad : Rechthoek {
        private double kosten;
        public Tafelblad(double l, double w) : base(l, w) { }
        public double KrijgKosten() { return KrijgOppervlakte() * 70; }
        public void Toon() {
            base.Toon();
            Console.WriteLine("Kosten: {0}", KrijgKosten());
        }
    }
    class UitvoerenRechthoek {
        static void Main(string[] args) {
            Tafelblad t = new Tafelblad(4.5, 7.5);
            t.Toon();
            Console.ReadLine();
        }
    }
}

Uitvoer:

Lengte: 4.5
Breedte: 7.5
Oppervlakte: 33.75
Kosten: 2362.5

Meervoudige Erfelijkheid in C#

C# ondersteunt geen meervoudige erfelijkheid voor klassen. Wel via interfaces.

Voorbeeld: Interface voor meervoudige erfelijkheid

using System;

namespace ErfelijkheidsApplicatie {
    class Vorm {
        public void StelBreedteIn(int w) { breedte = w; }
        public void StelHoogteIn(int h) { hoogte = h; }
        protected int breedte, hoogte;
    }
    public interface VerfKosten {
        int KrijgKosten(int oppervlakte);
    }
    class Rechthoek : Vorm, VerfKosten {
        public int KrijgOppervlakte() { return breedte * hoogte; }
        public int KrijgKosten(int oppervlakte) { return oppervlakte * 70; }
    }
    class RechthoekTester {
        static void Main(string[] args) {
            Rechthoek r = new Rechthoek();
            r.StelBreedteIn(5); r.StelHoogteIn(7);
            int oppervlakte = r.KrijgOppervlakte();
            Console.WriteLine("Totale oppervlakte: {0}", oppervlakte);
            Console.WriteLine("Totale verfkosten: ${0}", r.KrijgKosten(oppervlakte));
            Console.ReadKey();
        }
    }
}

Uitvoer: Totale oppervlakte: 35, Totale verfkosten: $2450

C Taal

  1. C# Classes & Objects: Fundamenten voor Robuuste OOP
  2. C# Static Keyword: Static Variabelen, Methodes en Classes Beheersen
  3. C# Geneste Classes: Definitie, Gebruik en Inheritance
  4. C++ Class Templates Beheersen: Een Praktische Gids
  5. C# Programma Structuur: Kerncomponenten & Hello World Voorbeeld
  6. C# Fundamentals: Basis Syntaxis & OOP Concepten
  7. Python-erfelijkheid beheersen: concepten, syntax en praktische voorbeelden
  8. Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
  9. Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
  10. Java Generics: Herbruikbare, type-veilige code bouwen
  11. Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen