IRC Security

Objektorientierte Programmierung OOP Grundlagen deutsch 2024

Date: []

Objektorientierte Programmierung OOP Grundlagen deutsch 2024

Fast alle modernen Programmiersprachen unterstützen bereits OOP und die zukünftigen Programmiersprachen werden ebenfalls darauf basieren.
Wer sich mit der Softwareentwickung beschäftigt, arbeitet vermutlich schon mit der objektorientierten Programmierung.

Unsere Amazon-Buchempfehlung zum Theme OOP:
Objektorientierte Programmierung: Das umfassende Handbuch.

Ist ein solches Buch direkt zu empfehlen ?
Nein, wenn Du noch keine OOP-Sprache kannst, empfehle ich Dir normales Buch oder einen Kurs
der jeweiligen Programmiersprache. Denn hier werden die Grundlagen bereits gut erklärt und Du kannst mit OOP automatisch umgehen. Das genannte Buch könnte zu harte Kost sein, wenn Du noch keine Programmiererfahrungen hast.

Hier umfassende PRogrammierbücher:
JavaScript: Das umfassende Handbuch. JavaScript lernen und verstehen. Inkl. objektorientierter und funktionaler Programmierung

Fullstack-Entwicklung: Das Handbuch für Webentwickler in neuer Auflage. Über 800 Seiten Roadmap Gebundene Ausgabe – 5. April 2023

PHP 8 und MySQL: Das umfassende Handbuch zu PHP 8. Dynamische Webseiten, von den Grundlagen bis zur fortgeschrittenen PHP-Programmierung

Java ist auch eine Insel: Das Standardwerk für Programmierer. Über 1.000 Seiten Java-Wissen. Mit vielen Beispielen und Übungen, aktuell zu Java 21 Gebundene Ausgabe – 6. Dezember 2023

Kotlin: Das umfassende Handbuch. Über 800 Seiten Kotlin-Wissen mit zahlreichen Beispielen aus der Entwicklerpraxis

Wir möchten hier die wichtigsten Prinzipien darstellen und einige Beispiele nennen.

Programmierung_Objektorientierte_Programmierung_OOP

Was versteht man unter Objektorientierte Programmierung OOP

Objektorientierte Programmierung (OOP) ist ein Programmierparadigma, das auf dem Konzept von "Objekten" basiert,
welche Daten und Methoden zu ihrer Verarbeitung in einer einzigen Einheit kapseln.
In der OOP werden Programme als Sammlungen von Objekten konzipiert, die miteinander interagieren, um komplexe Aufgaben zu erfüllen.

Die grundlegenden Prinzipien der OOP sind:

1. Kapselung
2. Vererbung
3. Polymorphismus
4. Abstraktion

Kapselung - Objektorientierte Programmierung

Jedes Objekt in der OOP enthält Daten (in Form von Attributen oder Eigenschaften) und die Methoden (Funktionen), die diese Daten bearbeiten.
Die Kapselung verbirgt die internen Details eines Objekts und stellt eine öffentliche Schnittstelle für die Interaktion mit dem Objekt bereit.

Kapselung in der objektorientierten Programmierung bedeutet, dass die internen Details eines Objekts verborgen bleiben und nur über definierte Schnittstellen zugänglich sind. Hier sind Beispiele für Kapselung in JavaScript, PHP und Java:

Zugriffmodifizierer als Werkzeug der Objektorientierten Programmierung
Eine kurze Einführung:
In objektorientierten Programmiersprachen wie Java und C# geben Zugriffsmodifizierer an, wie der Zugriff auf Klassen, Methoden, Konstruktoren und Eigenschaften kontrolliert wird. Hier sind die gängigen Zugriffsmodifizierer kurz erklärt:

public: Ein Mitglied, das als öffentlich deklariert wird, ist von überall her zugänglich, innerhalb und außerhalb der Klasse oder des Pakets, in dem es definiert ist.
private: Ein privates Mitglied ist nur innerhalb der Klasse zugänglich, in der es definiert ist. Es ist nicht von außen oder von abgeleiteten Klassen (Unterklassen) zugänglich.
protected: Ein geschütztes Mitglied ist innerhalb seiner Klasse und von abgeleiteten Klassen zugänglich, unabhängig davon, ob diese im gleichen Paket sind oder nicht.
default (package-private in Java): Wenn kein Zugriffsmodifizierer angegeben ist, hat das Mitglied Paketzugriff in Java, was bedeutet, dass es von jeder Klasse im gleichen Paket zugänglich ist, aber nicht von Klassen außerhalb dieses Pakets.
internal (in C#): Ein internes Mitglied ist innerhalb des gesamten Assemblys, in dem es definiert ist, zugänglich, aber nicht von außerhalb des Assemblys.

Diese Zugriffsmodifizierer helfen dabei, die Prinzipien der Kapselung und des Information Hidings in der objektorientierten Programmierung umzusetzen, indem sie die Sichtbarkeit und den Zugriff auf verschiedene Teile des Codes kontrollieren.

Kapselung Beispiel mittels JavaScript:

In JavaScript kann Kapselung mit Funktionen und Closures erreicht werden,
da es keine expliziten Mittel wie 'private' oder 'public' Schlüsselwörter bietet.
OOP_Kapeslung_Beispiel_java

Kapselung Beispiel mittels php:

PHP OOP Kapselung
PHP unterstützt Kapselung durch Zugriffsmodifizierer wie private, protected und public.

OOP_Kapeslung_Beispiel_php

Kapselung Beispiel mittels java:

Java OOP Kapselung
OOP_Kapeslung_Beispiel_Javascript

In allen drei Beispielen werden die Daten (name und age) in der Klasse Person gekapselt und sind nur über öffentliche Methoden (getName() und getAge()) zugänglich. Direkter Zugriff auf die internen Variablen von außerhalb der Klasse ist nicht möglich, was die Kapselung demonstriert.

Vererbung Objektorientierte Programmierung

Vererbung ermöglicht es neuen Objekten (abgeleiteten Klassen), Eigenschaften und Verhalten von bestehenden Objekten (Basisklassen) zu übernehmen.
Dies fördert die Wiederverwendbarkeit von Code und erleichtert die Erstellung und Wartung komplexer Systeme.

Vererbung in JavaScript wird etwas anders gehandhabt als in klassischen objektorientierten Programmiersprachen wie Java oder C++. JavaScript verwendet Prototypen für Vererbung, anstatt Klassen und Klassenvererbung (obwohl moderne JavaScript-Versionen Syntax für Klassen bieten, die unter der Haube auf Prototypen basieren).

In JavaScript erbt jedes Objekt Eigenschaften und Methoden von einem Prototypenobjekt. Hier ist ein einfaches Beispiel, um zu zeigen, wie Vererbung in JavaScript funktioniert:

OOP_Vererbung_Beispiel_JavaScript

In diesem Beispiel wird Employee so erstellt, dass es von Person erbt. Dies wird erreicht, indem:

Die Person-Konstruktorfunktion mit Person.call(this, name) innerhalb des Employee-Konstruktors aufgerufen wird, um Eigenschaften von Person zu erben.
Employee.prototype wird auf ein Objekt gesetzt, das von Person.prototype erstellt wurde, was Employee ermöglicht, Methoden von Person zu erben (Object.create(Person.prototype)).
Die greet-Methode wird für Employee überschrieben, um spezifisches Verhalten für Employee-Instanzen zu definieren.

Polymorphismus Objektorientierte Programmierung

Polymorphismus erlaubt es Objekten, auf die gleiche Nachricht oder Methode auf unterschiedliche Weise zu reagieren, basierend auf ihrem Typ oder ihrer Klasse. Dies ermöglicht eine flexible Code-Struktur, in der derselbe Code mit verschiedenen Objekttypen arbeiten kann.

Polymorphismus, ein zentrales Konzept der objektorientierten Programmierung (OOP), bezieht sich auf die Fähigkeit von Objekten unterschiedlicher Klassen, auf dieselbe Nachricht oder Methode auf unterschiedliche Weise zu reagieren. Der Begriff "Polymorphismus" kommt aus dem Griechischen und bedeutet "viele Formen". In der OOP ermöglicht Polymorphismus, dass ein Interface (Schnittstelle) mehrere Implementierungen hat, was zu flexiblerem und wiederverwendbarem Code führt.

Es gibt hauptsächlich zwei Arten von Polymorphismus:

Polymorphismus ermöglicht es Entwicklern, Code zu schreiben, der mit Objekten unterschiedlicher Klassen arbeiten kann, solange diese Klassen eine gemeinsame Schnittstelle oder Basisklasse teilen. Dies führt zu einer flexibleren und erweiterbaren Codebasis, da neue Klassen hinzugefügt werden können, ohne bestehenden Code zu ändern.

In JavaScript wird Polymorphismus meist durch Prototypen und Konstruktorfunktionen realisiert.
Hier ist ein Beispiel, das zeigt, wie Polymorphismus in JavaScript funktionieren kann:

OOP_Vererbung_Beispiel_JavaScript

In diesem Beispiel ist Tier eine Basiskonstruktorfunktion mit einer Methode sprechen. Sowohl Hund als auch Katze sind abgeleitete Konstruktorfunktionen, die von Tier erben. Jede abgeleitete Klasse ruft den Konstruktor von Tier mit einem unterschiedlichen Sound auf. Dadurch "überschreiben" sie effektiv, wie die sprechen-Methode für ihre jeweiligen Instanzen funktioniert, obwohl sie die gleiche Methode im Prototyp verwenden. Dies ist ein Beispiel für Polymorphismus in Aktion: Unterschiedliche Objekte können die gleiche Methode auf unterschiedliche Weise ausführen.

OOP Abstraktion Objektorientierte Programmierung

Abstraktion bezieht sich auf die Fähigkeit, komplexe Realitätsaspekte zu vereinfachen, indem nur die relevanten Eigenschaften und Verhaltensweisen modelliert werden. Dies erleichtert das Verständnis und die Handhabung komplexer Systeme.

Abstraktion in der Programmierung, einschließlich in JavaScript, bezieht sich auf die Praxis, komplexe Realität zu vereinfachen, indem nur relevante Daten und Aktionen dargestellt und unnötige Details verborgen werden. In JavaScript kann dies durch die Verwendung von Konstruktorfunktionen, Klassen (in ES6 und später) oder Modulen erreicht werden, um eine Schnittstelle zu definieren, die die Funktionalität einer Komponente oder eines Objekts zusammenfasst.

Hier ist ein einfaches Beispiel für Abstraktion in JavaScript, das eine Klasse verwendet:

Beispiel_abstaktion_Javascript_Grundlagen_2024

In diesem Beispiel ist Auto eine abstrakte Darstellung eines Autos. Es verbirgt die Komplexität, was genau passiert, wenn ein Auto startet oder fährt, und stellt stattdessen einfache Methoden starten und fahren zur Verfügung. Die Nutzer der Klasse Auto müssen sich nicht mit den Details des Motors, der Kraftübertragung oder anderer interner Mechanismen befassen. Sie interagieren mit dem Auto-Objekt nur über die definierten Methoden.

Diese Art von Abstraktion ermöglicht es, dass der Code sauber, verständlich und wartbar bleibt, indem er die Details verbirgt und nur das präsentiert, was für den Anwender der Klasse relevant ist.

Welche bekannten Programmiersprachen arbeiten nicht mit OOP?

Es gibt mehrere bekannte Programmiersprachen, die nicht primär auf Objektorientierte Programmierung (OOP) ausgerichtet sind, obwohl einige von ihnen OOP-Elemente unterstützen können. Hier sind einige Beispiele:
C
C ist eine prozedurale Programmiersprache, die für System- und Anwendungsprogrammierung verwendet wird. Sie unterstützt keine OOP-Konzepte wie Klassen und Objekte.
Fortran
Eine ältere Sprache, die hauptsächlich in wissenschaftlichen und ingenieurwissenschaftlichen Anwendungen verwendet wird. Sie ist prozedural und unterstützt keine OOP.
COBOL
Eine Sprache, die hauptsächlich in Geschäftsanwendungen verwendet wird. Sie ist prozedural und unterstützt OOP nicht in ihrem ursprünglichen Design, obwohl spätere Versionen einige objektorientierte Funktionen eingeführt haben.
Bash/Shell-Scripting-Sprachen
Diese Sprachen werden für das Schreiben von Skripten in Unix- und Linux-Umgebungen verwendet. Sie sind prozedural und unterstützen in der Regel keine objektorientierten Konzepte.
Haskell
Eine funktionale Programmiersprache, die sich auf Funktionen anstelle von Objekten konzentriert. Funktionale Programmiersprachen wie Haskell verwenden unterschiedliche Paradigmen als OOP.
Erlang
Eine weitere funktionale Programmiersprache, die für verteilte Systeme und Echtzeitanwendungen bekannt ist.
Prolog
Eine logikbasierte Programmiersprache, die hauptsächlich in der Künstlichen Intelligenz und in der Computerlinguistik eingesetzt wird.
SQL (Structured Query Language)
Eine Sprache zur Verwaltung und Abfrage von Daten in relationalen Datenbanksystemen.
SQL ist eine deklarative Sprache und folgt nicht den OOP-Prinzipien.

Diese Sprachen folgen anderen Paradigmen wie dem prozeduralen, funktionalen, deklarativen oder logikbasierten Paradigma. Jedes Paradigma hat seine eigenen Stärken und Einsatzgebiete, und die Wahl der Sprache hängt oft von den spezifischen Anforderungen des Projekts ab.

Welche bekannte Sprachen unterstützen OOP ?

Viele moderne und weit verbreitete Programmiersprachen unterstützen Objektorientierte Programmierung (OOP).

Java
Eine der bekanntesten OOP-Sprachen, die für ihre Plattformunabhängigkeit und umfangreiche Standardbibliothek bekannt ist.

C++
Eine Erweiterung der Programmiersprache C, die OOP-Elemente hinzufügt und für System- und Anwendungsprogrammierung verwendet wird.

Python
Eine vielseitige Hochsprache, die OOP unterstützt und für ihre einfache Syntax und Lesbarkeit bekannt ist.

C# (C-Sharp)
Von Microsoft entwickelt, eine OOP-Sprache, die häufig für die Entwicklung von Windows-Anwendungen und Spielen verwendet wird.

Ruby
Eine dynamische Programmiersprache, die für ihre Eleganz und produktive Syntax bekannt ist. Ruby folgt dem Prinzip "Alles ist ein Objekt".

PHP
Ursprünglich eine einfache Skriptsprache, unterstützt sie jetzt vollständig OOP und wird häufig für Webentwicklung verwendet.

Swift
Von Apple entwickelt, ist Swift eine OOP-Sprache, die für die Entwicklung von iOS- und macOS-Anwendungen verwendet wird.

Kotlin
Eine relativ neue Sprache, die für die Java Virtual Machine (JVM) entwickelt wurde und vollständige OOP-Unterstützung bietet. Sie wird zunehmend für Android-Entwicklung verwendet.
Objective-C
Vor der Einführung von Swift war dies die Hauptprogrammiersprache für die Entwicklung von iOS- und macOS-Anwendungen.
Smalltalk
Eine der ersten reinen OOP-Sprachen, die viele der Konzepte prägte, die in späteren OOP-Sprachen verwendet wurden.

Diese Sprachen bieten umfangreiche Unterstützung für OOP-Konzepte wie Klassen, Objekte, Vererbung, Polymorphismus und Kapselung, und werden in einer Vielzahl von Anwendungsbereichen eingesetzt, von Systemprogrammierung über mobile und Web-Entwicklung bis hin zu wissenschaftlichen Anwendungen.

Mit welcher Programmiersprache sollte man als Anfänger starten?

Diese Frage ist schwierig, ich habe mit Basic angefangen über Turbo-Pascal, in der UNI wurde JAVA als OOP-Sprache gelernt.

Ich persönlich empfehle Python oder Java-Script, weil man hier sofort eigene Projekte erstellen kann.

Die Wahl einer Programmiersprache für Anfänger hängt von verschiedenen Faktoren ab, einschließlich der persönlichen Interessen, der Art der Projekte, die man entwickeln möchte, und der Lernressourcen, die zur Verfügung stehen. Hier sind einige gängige Programmiersprachen, die oft für Anfänger empfohlen werden:

Python: Wegen seiner klaren und leicht lesbaren Syntax ist Python ideal für Anfänger. Es wird in verschiedenen Bereichen verwendet, von Webentwicklung über Datenanalyse bis hin zu maschinellem Lernen.

JavaScript: Wenn Du an Webentwicklung interessiert bist, ist JavaScript unerlässlich. Es wird auf der Client-Seite in nahezu allen Webbrowsern verwendet und zunehmend auch auf der Server-Seite via Node.js.

Java: Java ist eine vielseitige Sprache, die in der Unternehmenswelt weit verbreitet ist. Es hat eine etwas strengere Syntax als Python, was gut sein kann, um grundlegende Programmierprinzipien zu verstehen.

C#: Wenn Du an Spieleentwicklung interessiert bist, insbesondere mit der Unity-Engine, ist C# eine gute Wahl. Es wird auch für Windows-Anwendungen verwendet.

Ruby: Bekannt für seine elegante Syntax, ist Ruby eine gute Sprache für Anfänger, die sich für Webentwicklung interessieren, insbesondere mit dem Ruby on Rails-Framework.

Kotlin: Wenn Du an Android-App-Entwicklung interessiert bist, ist Kotlin eine moderne, benutzerfreundliche Sprache, die von Google als bevorzugte Sprache für Android empfohlen wird.

Swift: Für die Entwicklung von iOS-Apps ist Swift die erste Wahl. Es ist von Apple entwickelt worden und für Anfänger gut zugänglich.

Es ist auch wichtig zu bedenken, dass das Erlernen der Grundlagen der Programmierung – wie Schleifen, Bedingungen, Variablen, Funktionen und Datenstrukturen – wichtiger ist als die spezifische Sprache, die Du wählst. Diese Konzepte sind in den meisten Programmiersprachen universell.