Frage von Blackoutd, 84

Objektorientierung in der Programmierung - nicht verstanden?

Hi,

Ich verstehe es einfach überhaupt nicht, wozu sowas nützlich sein soll bzw. Verstehe ich es generell nicht. Ich hab mir schon so viele Beispiele angeschaut. Z.b den Beispiel mit dem Stift.. (Eigendchaften, Attribute etc..) Und ich verstehe noch was nicht. Parameter. Ich kapiere es einfach nicht :( Ich hab verstanden was Variablen sind, man kann damit Informationen speichern. Und mit Operatoren kann man sie verarbeiten... Gibt auch ein Oberbegriff dafür das sich Werkzeuge in der Programmierung nennt.. Aber dann hört der Verständnis auch schon auf. Lerne übrigens Java. .. zumindest versuche ich es..

Mfg

Antwort
von Berny96, 38

Du bist Gott und du baust eine Gesellschaft auf die lediglich dafür da ist einen Nutzen zu erfüllen. Dieser nutzen wäre zum Beispiel als Gesellschaft ein Projekt durchzuführen, und zwar ein besonderes Kunststück zu erschaffen. 

Jetzt fängst du an:

Du überlegst dir, was brauche ich für Menschen/Rollen, und was wären ihre Aufgaben. 

Diese legst du detailliert fest: 

Ich werde Kreative Menschen brauchen die sich neue Ideen einfallen lassen. Ich werde Menschen brauchen die diese Ideen in umsetzbare Pläne umsetzt. Außerdem noch Menschen die das Kunststück letztendlich, nach Plan, bauen.

So. Wir haben also Planer, Bauarbeiter und Ideenentwickler.

Müssten wir genau aufschreiben was diese Menschen genau können müssen um ihren nutzen in der Gesellschaft zu erfüllen so würde es ca. so aussehen:

Planer:

  • kann Ideen Analysieren
  • kann ressourcen kalkulieren
  • kann Konzepte entwickeln und diese aufschreiben

Ideenentwickler

  • kann Ideen entwickeln
  • kann Ideen beschreiben

etc..

Nachdem wir unsere Menschen alle haben, die jeweils eine andere Rolle in der Gesellschaft spielen können wir loslegen als Gott, ihnen Anweisungen zu geben, wann Sie was tuen. Wir haben jetzt nämlich nur Menschen die was bestimmtes können aber die noch keinerlei zusammen arbeiten können oder wissen wann Sie ihre Fähigkeiten einsetzen sollen. Also entwickeln wir einen Masterplan für die Gesellschaft:

  1. Am Anfang brauchen wir 10 Ideenentwickler die Zusammen eine Idee entwickeln. 
  2. Ist die Idee entwickelt so sollen diese die Idee beschreiben und in Worte fassen um den Planern die Idee erläutern zu können.
  3. Die Planer bekommen die Idee und Analysieren diese. Danach kalkulieren Sie die Ressourcen und stellen anhand der Kalkulationen Konzepte auf die letztendlich in ein Plan zusammengefasst werden.
  4. Die Bauarbeiter bekommen diesen Plan und bauen strikt nach Plan das Kunststück. 


Und Viola, da haben wir das Kunststück.


Als Programmierer, spielst du Gott. Du hasst alle nötigen Körperteile und geistigen Fähigkeiten um dein Mensch so aufzubauen wie du ihn brauchst. Dieser Mensch, ist deine Klasse. Dein Masterplan, ist dein Programm was wie unser Masterplan, einen Anfang hat und ein Ende, der Code läuft von oben bis unten. Und die Gesellschaft sind alle Klassen die du für dein Programm brauchst. Die Fähigkeiten der Menschen sind Funktionen deiner Klasse. Auch Methoden genannt. Und du, bist Gott.
Kommentar von Blackoutd ,

Achsoo :D und was ist dann eine Instanz variable , Constructor und eine Attribute?

Kommentar von Blackoutd ,

Achja, sehr gut erklärt finde ich . :)

Kommentar von Berny96 ,

Okay also pass auf:

Die klasse, ist nur die Art von Mensch. Also eine Klasse wäre zum beispiel Planer. Eine Instanz ist ganz einfach ein bestimmter Planer. Herr Moritz der Planer wäre eine Instanz der Klasse Planer. 

Eine Variabel ist bloß etwas was im ganzen Prozess zur hilfe kommt. Eine Variabel könnte sein der PLan den  der Planer erstellt und dem Bauarbeiter gibt. Halt eben alles was kein Mensch ist. 

Ein Konstruktor würde in der Realen Welt irgendwie keinen Platz finden haha da muss ich mir was überlegen ;D 

Wenn du als Gott einen Menschen erschaffst, gibst du ihn am Anfang bestimmte Fähigkeiten mit. Damit du aber nicht jeden Menschen genau diese Fähigkeiten manuell beibringen musst und alle erziehen musst sagst du ihm einfach bei der Erstellung welche Fähigkeiten er haben soll und sein Konstruktor sorgt dafür dass diese Ihm auch richtig beigebracht werden. Vielleicht etwas unverständlich aber wenn dir die ganze Sachen ein bisschen mehr liegt wird auch das hier ganz viel Sinn machen. :)

Kommentar von Berny96 ,

Ach ja und Attribute sind eigenschaften der Menschen. Der Planer ist schlau er hat die EIgenschaft IQ und die ist auf 140 gesetzt. Der Ideenentwickler hat die Kreativ Eigenschaft und die ist auf 100% gestellt.. Der Bauarbeiter hat die Eigenschaft  Kraft und ist auch auf 100% gestellt. 

Kommentar von Blackoutd ,

Danke dir für deine Mühe :)

Kommentar von Geldon ,

Geil wie allmächtig ich mich nach deiner wunderbar formulierten Antwort nun fühle.

Antwort
von Xandoo94, 26

Also um mal zu helfen bzw mir hat es geholfen arbeite sich mal in eine Anfängerfreundliches Framework ein dort wirst du auch das MVC (Modell View Controller) erstmals kennen lernen was dir denke ich sehr helfen

Expertenantwort
von Marbuel, Community-Experte für Computer & PC, 22

Um Sachen zu kapseln und es somit übersichtlicher, besser wartbar und wiederverwendbar zu machen. Sonst müsstest du alles immer wieder neu machen. Eine Klasse ist eine Vorlage. Einmal angefertigt, kannst du sie immer wieder verwenden.

Antwort
von grtgrt, 16

Bitte lies 

Diese beiden Antworten sollten dir wenigstens rüber bringen, wie sich objektorientierte Programme von anderen unterscheiden.

Antwort
von Xandoo94, 43

Die objektorientierte Programmierung kurz OOP ist eine der schwersten Hürden für jeden Einsteiger alleidings einmal verstanden wirst du deine Meinung mit wozu es nützlich ist wegschmeißen. Gerade in Projekten die mit Teams "also mehrere Entwickler " zeigt die Objektorientierte Programmierung ihre sterken denn die meisten guten Frameworks setzen OOP vorraus

Kommentar von Xandoo94 ,

Ach und ein tipp In Java ist es auch blöde liegt daran das es eine miese Sprache ist xD ne spass aber als webentwickler ist Java halt ein nogo

Kommentar von Blackoutd ,

Als Webentwickler muss man bestimmt auch mit Javascript arbeiten. xd

Kommentar von Xandoo94 ,

Was hat Java Script mit Java zu tun sind 2 unterschiedlich voll anerkannte Programmiersprachen

Kommentar von Xandoo94 ,

Als webentwickler arbeitet man hauptsächlich mit fontendframeworks wie Bootstrap. Natürlich braucht man fundierte Kenntnisse in HTML5 CSS3 Javascript Ajax und natürlich PHP letzteres ist übrigens meiner Meinung nach die schönste Sprache und glaub mit ich beherrsche neben Java auch noch Python und C# dort allerdings nur Grundwissen der Syntax

Kommentar von Blackoutd ,

was bedeutet eig. syntax?

Kommentar von Berny96 ,

Syntax ist die Grammatik, Satzbau und Punktesetzung einer Programmiersprache. Genau wie Deutsch am Ende eines Satzes ein Punkt braucht, muss man in Java am Ende einer Anweisung ein ";" setzen. Nomen brauchen Artikel. Variabeln brauchen Datentypen. "Der Apfel" -> "int punkteZahl"

Antwort
von newcomer, 46
Kommentar von Blackoutd ,

Java

Antwort
von Mikkey, 11

Lese ein Buch zu dem Thema und verlasse Dich nicht auf Antworten von Leuten, die es noch weniger raffen als Du selbst.

Antwort
von gut4fr5g4, 37

Kannst mir deinen Skypenamen per pn schicken, dann erkläre ich es dir :)

Kommentar von Blackoutd ,

Habe keinen Skype :( kannst du es mir hier erklären bzw. per pn?? :(

Kommentar von gut4fr5g4 ,

Klar!

Also: 

Du solltest für jedes Element deines Programms eine Klasse erstellen, so willst du zum Beispiel Snake programmieren. Dann machst du folgende Klassen: Main, Snake, Map oder Field und ggf. ein Enum Move.

Zum Sinn des Ganzen:

Das alles dient eigentlich nur zur Übersichtlichkeit, denn stell dir vor, du schreibst alles in eine Klasse (in die MainKlasse), dann musst du 500 Zeilen oder so nach oben scrollen, wenn du eine Variable ändern musst, weshalb du einfach für jedes Element eine Klasse erstellst.

Zum Aufbau: 

Die Main sollte nur alles Aufrufen, also zum Beispiel "create"-Methoden oder "render"-Methoden, oder Ähnliches.

Der Rest sollte Instanzmethoden (oder statische Methoden, aber vermeide es, wenn möglich) beinhalten, die dann wie oben beschrieben die Aufgaben des jeweiligen Elements erledigen, also zum Beispiel bei der "Snake"-Klasse eine Move-Methode zur Fortbewegung.

Dann, wenn du ein Spiel machst, ein Enum für zum Beispiel die Richtungen.

Etc.

Hilfreich sind ebenfalls Polymorphie und Vererbung, aber nicht zwingend notwenig.

Beachte:

Mach nicht für jeden Müll eine neue Klasse sondern denk dir immer "Mhh, was gibt es alles für Elemente" und gestaltest demnach deinen Code.

LG, solltest du noch Fragen haben, frag einfach! :)

Kommentar von wholl0p ,

Sehr hilfsbereit! Daumen hoch! :)

Kommentar von gut4fr5g4 ,

Ironie? :D

Kommentar von Blackoutd ,

Danke :)

Kommentar von RakonDark ,

Wenn das die denke von oop ist , dann hab ich vor oop mit Funktionen das gleiche gemacht was der da beschreibt. oop sagt es doch . Es geht um Objekte . Das die sich class nennen ist zweitrangig. Objekte können halt mehr als was eine variable kann. Objekte können miteinander interagieren . Objekte können ihre eigenen Daten verwalten . Objekte können etwas tun durch ihre Methoden und haben ihre Eigenschaften durch Variablen . Objekte Fassen ein bestimmtes Aufgabengebiet zusammen. Denn eine Aufgabe ergibt sich durch die Funktion und die Daten die für diese Aufgabe benötigt werden. Parameter sind Daten die man einer Sache mitgeben kann . Mit den Daten wird dann im Programm Ablauf weitergearbeitet. Das tolle ist das durch die Namensgebung eine Analogie zu realen Dingen entstehen kann. Das Objekt Taschenrechner hat Objekte Tasten und Objekt Anzeige . Wie genau das aufgeteilt wird bleibt den Konstrukteur vorbehalten.

Kommentar von RakonDark ,

Ups bei Eigenschaften hab ich noch die Attribute vergessen.

Keine passende Antwort gefunden?

Fragen Sie die Community