Umstieg von Assembler auf C++ / Java / C#


Clund

(aka Cpp-Freak)
Moin moin,
eine Frage mal: wieso gibt es eigentlich solche Zuriffsrechte in Hochsprachen (C++, Java, ....)?
Ich meine, für guten Programmierstil sorgt es ja, aber irgendwie deaktivieren oder so kann man das net...
Dazu sagen muss man: Assembler ist die einzige Programmiersprache, mit der ich praktische Erfahrung hab (arbeite seit ca 2-3 Jahren an einem eigenem OS)
Cpp-Freak
 

Spyke

Premium-User
Ich geh mal von C# aus:
Ich sags mal so diese Modifierer sind eigentlich mehr hilfen für die Programmierer um den Code strukturierter aufbauen zu können.
Zumindest in C# kann man diese ganz leicht aushebeln, per Reflection.
 

sheel

I love Asm
Der Sinn von Klassen ist ja, dass sie einmal für eine spezielle Aufgabe programmiert wird und dann verwendet werden kann, ohne dass der Verwender sich mit der Funktionsweise dahinter auskennen muss.

Und weil man beim Klassenprogrammieren auch gerne Mal häufig verwendete Codestücke in Funktionen auslagern will, die allein zum Aufrufen keinen Sinn machen würden...

Beispiel: Man schreibt eine Klasse, die eine Methode load nach außen anbietet.
load bekommt eine Webseitenurl und einen Pfad. Die Webseite soll im Festplattenpfad gespeichert werden.
Intern hat die Klasse connect, get, close; für Verbinden-Herunterladen-Verbindungsende.
get verwendet dabei Variablen, die von connect vorbereitet wurden.
Wenn man get jetzt selbst aufrufen könnte, ohne zuerst connect zu verwenden, wird es nicht funktionieren, das Programm eventuell abstüzen lassen...

Die Zugriffsmodifizierer sind also quasi eine Empfehlung, was man von der Klasse verwenden soll.
Verbindlich ist davon übrigens nichts.
Wenn man unbedingt will kann man das System in allen genannten Sprachen umgehen.

Gruß
 

Clund

(aka Cpp-Freak)
aso,
irgendwie wirkt das auch etwas geordneter, mein System verstehe ich llangsam selbst net mehr...
also danke für die Aufklärung
Cpp-Freak
 

sheel

I love Asm
Reflections: Eine Möglichkeit in C# und Java herauszufinden, welche Klassen es gibt, welche Methoden/Variablen drin sind, per Name der Klasse ein Objekt davon zu erzeugen (ohne dass der Name beim Kompilieren bekannt sein muss), und die enthaltenen Methoden auch über die Namen aufrufen etc...

Man kann auch abfragen, was public/private/protected ist, aber unabhängig davon auf alles zugreifen.

Was C/C++ angeht: Über die Adresse einer Funktion kann man diese auch aufrufen.
Um die Zugriffserlaubnis kümmert sich nur der Compiler.
Hab auch schon von versteckten Einstellungsmöglichkeiten gehört, die den Compiler das auch ignorieren lassen.

edit: Oder ein gcc-Bug:
http://www.cplusplus.com/forum/general/3010/
 
Zuletzt bearbeitet:

Linuxfriend

Mitglied
Wie steht's eigentlich gerade mit deinem OS? Was Kanns denn? Ich bin auch schon seit ca. 2 Jahren im OSdev tätig :)
Ich finde meine Varriante des Assembler-C Crossovers ist die beste form zu Programmieren.
LG
Linux best fried
 

Clund

(aka Cpp-Freak)
Naja, ich hab nen Sinn dafür gefunden (also für mein OS)
das einzige was es kann ist ein passables Software Multitasking und Tastaurausgabe
also hab mir mit nem erfahrenem Microcontrollerbastler überlegt, das mein OS über COM auf Befehle eines atemega's wartet und diese dann in eine Bildschirmausgabe umsetzt
sonst kann man mit diesen at megas nur Mäusekino betreiben
 

Linuxfriend

Mitglied
wie ich einem deiner alten Threads entnehme warst mit dem ding mal bei jugend Forscht. Was meinst du lohnt sich das jetzt nochmal mit deiner Aktuellen Varriante?
LG
Linux best friend