Konstruktor private



  • Hallo,

    es scheint manchmal Sinn zu machen einen Konstruktor private zu deklarieren.

    Aussage: Sinnvoll, wenn Klasse B friend von Klasse A ist
    Dann können in A die Konstruktoren und Destruktoren
    private sein, da B Zugriff auf private-Komponenten
    von A hat

    Versteh ich leider nicht. Unter Umständen auch weil ich nicht versteh
    wozu die friend klasse den konstruktor der befreundeten klasse brauchen sollte.
    Sie dürfte doch eher Intresse an Methoden haben denk ich mal.

    Jedenfalls kann man dann kein objekt der STandardklasse mehr anlegen,
    da ja der Konstruktor private ist. Führt zu fehlermeldung.



  • Die friend-Klasse aber kann das und so die Erstellung der Instanzen verwalten.



  • Wäre z.B. sinnvoll, wenn A nicht direkt erstellt werden können soll, dann macht man eine Factory - deine Klasse B. B ist friend von A.
    Meistens macht man aber Copy-CTOR und op= private, damit das Objekt nicht kopiert werden kann.



  • aha danke,

    hab da gerade eine stellenanzeige bzgl praktikum

    Was ist der unterschied zwischen einem software engineering praktikum und
    einem programming praktikum ?



  • Was ist der Unterschied zwischen einem Architekten und einem Maurer? 😉


  • Mod

    😕 Bei einem entwickelt man Software, beim anderen programmiert man.



  • wenn ich software entwickle , programmier ich doch auch ?

    bezieht sich software engineering rein auf das entwickeln von einer
    Entwicklungsumgebung ?



  • Eine Entwicklungsumgebung ist was ganz anderes.

    Der Softwararchtiekt oder Software Engineer oder wie auch immer man den schimpfen möchte entwirft normalerweise die Software anhand von UML-Diagrammen und anderem Pipapo, sorgt für sauber definierte Schnittstellen, Anforderungsprofile etc.

    In der Realität ist es aber häufig so das der zum Programmierer degradiert wird und draufloshackt und die Anforderungen erst am Ende des Projektes neu definiert werden. 😉



  • was meinst du mit schnittstellen sauber deklarieren ?



  • Google ist dein Freund.



  • ich kenn schnittstellen aus C++ als abstrakte klasse.

    Implementiert werden sie sowieso in der Kindklasse. Also was meinst
    du genau mit sauber deklarieren ?



  • Klasse A nutzt B nutzt C nutzt D. Alles wird von unterschiedlichen Programmierern entwickelt. Daher müssen die Schnittstellen sauber definiert und durchdacht sein, denn sonst gibt es Chaos bei Änderungen.



  • blurry333 schrieb:

    Also was meinst
    du genau mit sauber deklarieren ?

    Der Vergleich zwischen Architekt und Maurer war schon ganz passend:

    Der "Architekt" legt hierbei fest was für Klassen, was für Funktionen... im groben existieren müssen (Er erstellt im wesentlichen eine Vorlage für das Grundgerüst des Programmes), der "Maurer" setzt die Pläne um.

    Diese Trennung ist in der Regel um so ausgeprägter, um so größer ein Projekt ist. Man erwartet von einem Softwarearchitekten eher den Überblick, und eine abstrakte Denkweise, als von einem Programmierer. Ein Programmierer kann im einfachsten Fall jemand sein, der effektiv nur Vorgaben in Diagrammform in Code umsetzt.

    In den Projekten die ich persönlich erlebt habe, hatte ich eine so starke Trennung aber nur ein einziges mal erlebt (Ansonsten waren die Grenzen deutlich verwischter, oder garnicht vorhanden) - ich habe aber bislang auch eher in kleinen Unternehmen und Projekten gearbeitet.


Log in to reply