Grundlagen der Informatik: OOP, Hardware und C

Eingeordnet in Informatik

Geschrieben am in mit einer Größe von 8,49 KB

Objektorientierte Programmierung (OOP)

Zweck: Strukturierung komplexer Datenstrukturen und Programme als Teil einer Organisation. Ein Datenobjekt ist nicht einfach, sondern enthält eine Reihe von gut strukturierten Komponenten.

Klassen

Klassen sind Erklärungen oder Abstraktionen, durch die Objekte definiert werden. Die Definition eines Objekts ist die Klasse. Eine Klasse ist eine statische Konstruktion, die ein gemeinsames Verhalten und Eigenschaften beschreibt. Die Formalisierung erfolgt durch eine Datenstruktur, einschließlich Daten und Funktionen, die Methoden genannt werden. Die Methoden definieren das Verhalten. Jede Klasse hat zwei spezielle Methoden:

  • Konstruktor (Builder): Wird aufgerufen, wenn die Klasse beginnt, ihren Platz im Speicher einzunehmen, d. h. wenn sie instanziiert wird. Er ist für die Initialisierung von Werten verantwortlich und ruft oft Konstruktoren anderer Klassen auf.
  • Destruktor (Destroyer): Er wird am Ende der Lebensdauer der Instanz aufgerufen, um Ressourcen freizugeben.

Objekte

Objekte sind Instanzen einer beliebigen Klasse. Wenn Sie eine Kopie erzeugen, müssen wir die Klasse angeben, von der sie erstellt wird. Diese Erstellung eines Objekts aus einer Klasse nennt man Instanziierung.

  • Identität: Ermöglicht es, zwischen einer Instanz und einer anderen zu unterscheiden.
  • Verhalten: Die Fähigkeit, bestimmte Aufgaben auszuführen, wie alle Objekte derselben Klasse.
  • Status: Wird durch gespeicherte Informationen bestimmt, die fest oder variabel sein können.

Konzepte der OOP

Datenabstraktion: Sie ermöglicht es, sich nicht um unwesentliche Details kümmern zu müssen. Sie existiert in fast allen Programmiersprachen (z. B. Datenstrukturen, Datentypen, Prozeduren). Es ist die Fähigkeit eines Objekts, seine Aufgaben unabhängig vom Kontext zu erfüllen.

Kapselung (Encapsulation): Diese Eigenschaft bezeichnet die Fähigkeit, auf Anfragen zu reagieren, ohne dass die Methoden einen Überblick über die Mittel benötigen, mit denen diese Ergebnisse erreicht werden.

Es gibt bestimmte Attribute, die in allen Instanzen einer Klasse vorkommen können und statisch definiert sind. Statische Methoden einer Klasse können aufgerufen werden, ohne die Klasse zu instanziieren. Sie greifen nur auf statische Daten zu. Der Aufruf statischer Methoden ist in der Regel komfortabel, insbesondere bei Initialisierungsaufgaben.

Vererbung

Es besteht aus einer Klasse, die ihre Variablen und Methoden an verschiedene Unterklassen vererben kann (die vererbende Klasse wird als Superklasse oder Oberklasse bezeichnet). Dies bedeutet, dass eine Unterklasse eigene Attribute und Methoden besitzt, zusätzlich zu den geerbten Attributen der Superklasse. Dadurch entsteht eine Hierarchie der Vererbung.

Polymorphismus

Dies beschreibt die Möglichkeit, mehrere Operationen mit dem gleichen Namen zu definieren, die sich nur in den Eingabeparametern unterscheiden. Je nach Objekt, das als Parameter eingeführt wird, wird die entsprechende Operation gewählt. Der Begriff Polymorphismus definiert auch die Fähigkeit, dass mehr als ein Objekt mit der gleichen Basis erstellt werden kann, um verschiedene Konzepte zu realisieren.

Abstrakte Klassen

Abstrakte Methoden werden deklariert, aber nicht implementiert. Wenn es eine abstrakte Methode gibt, deklarieren wir die Klasse als abstrakt; von ihr können keine Instanzen erstellt werden. Sie dienen dazu, Definitionen festzulegen, die in den Unterklassen der abstrakten Klasse vervollständigt werden.

Architektur eines PCs

Hardware

So nennt man die physischen Komponenten des Computers, deren Funktionalität nicht leicht geändert werden kann. Ein Computer besteht aus vier Grundeinheiten:

  1. Eingabeeinheit: Der PC muss Daten und Anweisungen zur Lösung eines Problems erhalten. Der Eingang besteht aus einem oder mehreren Geräten.
  2. CPU: Das wichtigste elektronische Gerät zur Datenverarbeitung. Die CPU interpretiert Anweisungen eines Programms und führt sie nacheinander aus. Sie besteht aus drei Haupteinheiten:
    • Control Unit (Steuereinheit): Kontrolliert und verwaltet die Übertragung von Daten und Anweisungen.
    • Arithmetisch-logische Einheit (ALU): Führt arithmetische (+, -, *, /), logische (AND, OR, NOT) und relationale (>, <) Operationen aus.
    • Register: Werden verwendet, um Anweisungen und Daten vorübergehend zu speichern.
  3. Speichereinheit: Wird verwendet, um Programme und Daten zu speichern.
  4. Ausgabeeinheit: Dient zum Drucken und Anzeigen der in der Speichereinheit gespeicherten Ergebnisse.

Interne Darstellung von Daten

  • Bits & Bytes: Daten werden im PC durch die Symbole 0 und 1 dargestellt, genannt Bits. Ein Verbund von 8 Bits ist ein Byte.
  • Software: Die Programme leiten den Betrieb der Hardware zur Lösung eines Problems; die Funktionalität ist leicht modifizierbar.
  • Betriebssystem (OS): Es ist zuständig für die Verwaltung aller Ressourcen eines Computers und bietet eine Schnittstelle zur Hardware. Ein großer Teil der Aufgaben entfällt auf die Organisation und Verwaltung der Speichermedien. Dazu werden zwei Konzepte genutzt:
    • Verzeichnisse (Directories): Logische Einheiten, die eine strukturierte Organisation ermöglichen. Sie sind Container für Informationen, dienen aber nur organisatorischen Zwecken.
    • Dateien (Files): Logische Einheiten mit Informationen. Der Inhalt einer Datei kann sehr unterschiedlich sein.
  • Anwendungen: Programme oder Sammlungen für spezifische Aufgaben wie Datenbanken, wissenschaftliches Rechnen oder Textverarbeitung.

Systementwicklung

Programmsammlungen sind für die Erstellung von Anwendungen bestimmt. Diese können wie folgt eingeteilt werden:

Nach dem Grad der Abstraktion

  • Low-Level-Sprachen: Sprachen, in denen der Programmierer Aufgaben sehr hardwarenah spezifizieren muss.
  • High-Level-Sprachen: Der Programmierer manipuliert abstrakte Gebilde, ohne sich um interne Implementierungsdetails zu kümmern.

Nach den Methoden

  • Imperative Sprachen: Der Programmierer muss den Programmfluss detailliert festlegen.
  • Deklarative Sprachen: Der Fokus liegt auf der Definition der Probleme statt auf der Lösung; Letztere basiert auf Mechanismen der Sprache.
  • Objektorientierte Sprachen: Der Programmierer definiert Einheiten, die durch einen inneren Zustand und Mechanismen zu dessen Änderung charakterisiert sind. Dies erleichtert die Modellierung physischer Gegebenheiten.
  • Mixed-Sprachen: Erlauben dem Programmierer, verschiedene Programmiermethoden zu mischen.

Nach der Ausführungsart

  • Interpretiert: Ein zusätzlicher Prozess kümmert sich während der Ausführung um die Umsetzung in Maschinensprache.
  • Kompiliert: Der Prozess der Übersetzung in Maschinencode wird vor der Ausführung durchgeführt. Dies erhöht die Effizienz erheblich, verringert aber die Flexibilität bei der Entwicklung.
  • Programmierumgebungen: Reichhaltige Umgebungen, die dem Programmierer die Entwicklung, Fehlersuche und das Testen erleichtern.

Die Programmiersprache C

Nachteile (Kontra)

  • Keine direkten Anweisungen für E/A oder String-Behandlung; dies erfolgt über Bibliotheken, was die Portabilität einschränken kann.
  • Die übermäßige Freiheit beim Schreiben kann zu Fehlern führen, die syntaktisch korrekt, aber schwer zu finden sind.
  • Die Prioritäten der Operatoren machen Ausdrücke manchmal zu kleinen Rätseln.

Merkmale

  • Strukturierte Programmierung.
  • Ökonomie der Ausdrücke.
  • Gleichzeitige Codierung auf hoher und niedriger Ebene.
  • Ersetzt vorteilhaft die Assembler-Programmierung.
  • Natürliche Nutzung der primitiven Funktionen des Systems.
  • Nicht auf einen bestimmten Bereich spezialisiert.
  • Produktion von hoch optimiertem Objekt-Code.

Verwandte Einträge: