Wie blockiert man Zugriff auf private Variablen/Funktionen



  • Hallo und guten Abend,

    ich habe eine allgemeine Frage zur Veröffentlichung von Projekten (mit noch relativer Anfänger).

    Nach meinem Verständis erstelt man ja private Membervariablen und Funktionen, so dass andere Entwickler (z.B. ein Kunde) nicht auf diese zugreifen können wie sie wollen.

    Meine Frage ist nun, wie man es dann in der Praxis realisiert, dass die Entwickler auch tatsächlich den Quellcode dieser Variablen oder Klassen NICHT bearbeiten können.
    Also ich meine die bekommen ja vom Ursprünglichen Entwickler die cpp-Dateien etc... Wie wird es jetzt organisiert, dass die Entwickler diese nicht verändern können. Werden die einfach schreibgeschützt (über Visual Studio z.B.)?
    Es bringt ja nix eine private Methode zu erstellen, wenn man im Quellcode herumpfuschen kann 😃
    Ergänzend wollte ich noch fragen, ob nach einem Release immer nur Dateien erstelt werden, die "schreibgeschützt" sind, dass generell kein externes bearbeiten möglich ist.

    Danke und viele Grüße
    René



  • Du musst sie protected machen, dann sind sie geschützt ^^ Quatsch.

    Private ist kein Schutz vor Kunden oder Veränderungen. Es geht darum, Klassen so zu designen, dass man sie möglichst nur genauso verwenden kann, wie das gedacht war und Fehler schon durch die Schnittstelle minimiert werden.


  • Mod

    Ganz verstehe ich Deine Frage nicht.
    Was willst Du verhindern?
    Was meinst Du ist zu schützen?

    1. Grundsätzlich:
    Warum nimmst Du an, dass ein Entwickler, Deinen Code "missbrauchen" will und diesen "falsch" und in "illegalerweise" benutzen will.

    C++ sieht den Schutz von Variablen vor, sodass der Compiler den Missbrauch verhindert. Jeder Programmierer, der weiß was Pointer sind, kann sich die Adresse einer Variablen ermitteln und diesen Zeiger mit einem Cast einfach benutzen um eine Variable zu "patchen".

    2. Es kommt darauf an wie der Code veröffentlicht und benutzt wird.
    2a. Innerhalb eines Teams würde ich als Leiter der Entwicklung einem anderen Programmierer die Hammelbeine langziehen, wenn er solche Klassenmechanismen (ohne Not) umgeht.
    Da gehört erstmal mit dem Code-Owner diskutiert und evtl. die Klasse angepasst wenn da was notwendig wird.
    2b. Kunden bekommen evtl nur Header und Lib oder DLL. Zudem gibt es Mechanismen wie das Pimpl Idiom...
    2c. Es gib auch die Auslieferung als Sourcecode. Aber dann hat der Kunde sowieso alle Möglichkeiten...

    3. Mach Dich über Source Code Kontrolle und Versionskontrolle klug. GiT, TFS etc... In solchen Umgebungen, kann man nicht "einfach mal" Code ändern...


Anmelden zum Antworten