In diesem Kapitel lernen wir etwas über Objektorientierung (OO) und erkunden die Vorteile, die sie im Softwaresystementwicklungsprozess mit sich bringt.
Warum brauchen wir Objektorientierung (OO) in der Softwareentwicklung?
Um diese Frage zu beantworten, schauen wir uns zunächst (kurz) an, wie Softwaresysteme mit der Methode Strukturierte Programmierung (auch bekannt als Funktionale Programmierung) entworfen werden.
1. Strukturierte Programmierung:
Bei der Strukturierten Programmierung besteht die allgemeine Methode darin, das Problem zu analysieren und es in Funktionen zu zerlegen, um bestimmte Aufgaben auszuführen. Die meisten dieser Funktionen benötigen zur Verarbeitung einen Datentyp. Daten in einem funktionalen System werden normalerweise in einer Datenbank gespeichert oder können als globale Variablen im Speicher gehalten werden.
Nehmen wir ein einfaches Beispiel eines Schulverwaltungssystems. Dieses System speichert Daten aller Schüler und Dozenten der Schule. Gleichzeitig verwaltet es auch Informationen über die an der Schule angebotenen Kurse und verfolgt, welche Schüler welche Kurse belegen.
Das System muss Informationen über Schüler, Lehrer, Prüfung und Kurs speichern und ist mit folgenden Funktionen ausgestattet:
- add_student
- zur_Prüfung eingeben
- check_exam_marks
- issue_certificate
- ausweisen_student
Von dort aus können wir wie folgt ein Diagramm von Daten, Funktionen und Abhängigkeiten erstellen:
Das Problem bei diesem Ansatz besteht darin, dass die Wartung des Systems immer schwieriger wird, wenn das von uns gelöste Problem zu komplex wird. Nehmen wir das obige Beispiel: Was passiert, wenn eine Anfrage die Art und Weise ändert, wie Student mit Daten umgeht, wie etwa die Umwandlung von „Geburtsjahr“ von zwei Wörtern und Zahlen in vier Ziffern? Schon diese kleine Änderung kann zu unvorhergesehenen Nebenwirkungen führen und schwerwiegende Probleme verursachen. Die Daten von Prüfung, Kurs und Lehrer hängen alle von den Daten von Student ab. Darüber hinaus haben wir möglicherweise die Funktionen add_student, enter_for_exams, issue_certificate und expel_student beschädigt. Beispielsweise wird add_student definitiv nicht mehr funktionieren, da es zweistellige Daten für „Geburtsjahr“ anstelle von vier Ziffern benötigt.
Aus dem obigen Beispiel können wir einige Nachteile der strukturierten Programmierung erkennen, einschließlich der Interdependenz zwischen Funktionen und Daten, die zu schwerer Wartung führt, schwer zu erweitern und leicht auf unerwartete Probleme zu stoßen beim Ändern von Daten. Um diese Probleme zu lösen, brauchen wir einen neuen Ansatz, und zwar Objektorientiert (OO).
2. Objektorientiert:
2.1. Konzept:
Objekt: kann als eine spezifische Entität verstanden werden, die aus 2 Hauptkomponenten besteht:
Attribute: Sind die Informationen und Eigenschaften des Objekts.
Methoden: Sind Operationen und Aktionen, die ein Objekt ausführen kann.
Aus dem obigen Beispiel des Problems Schulverwaltungssystem können wir die folgenden Objekte haben:
Klasse: ist ein Datentyp, der vordefinierte Eigenschaften und Methoden enthält, die Objekte haben werden. Wir können Klasse als Vorlage zum Erstellen von Objekten verstehen.
Zum Beispiel:Klasse Schüler ist eine gemeinsame Definitionsvorlage für alle Schüler, einschließlich gemeinsamer Eigenschaften und Methoden wie Name, Geburtsjahr und anderen Vorgängen wie der Einschreibung in die Schule. Das Subjekt ist ein bestimmter Schüler namens Nguyen Van A, geboren 2004 mit den Merkmalen der Klasse Student
2.2. Grundprinzipien von OOP:
Kapselung
Kapselung ist die Gruppierung verwandter Eigenschaften und Methoden in derselben Klasse zum Zweck einer effektiven Verwaltung und Nutzung. Dies reduziert die Komplexität und erhöht die Sicherheit, während der Code gleichzeitig einfach zu warten und zu erweitern ist.
public class Student { private String name; private String dateOfBirth; public void registerForCourse(Course course) { course.addStudent(this); } }
Studenteninformationen werden in der Student-Klasse gekapselt und Aktionen im Zusammenhang mit Student werden über Methoden in dieser Klasse ausgeführt.
Vererbung
Vererbung ermöglicht einer untergeordneten Klasse, die Eigenschaften und Methoden der übergeordneten Klasse zu erben, um Quellcode optimal wiederzuverwenden und die Funktionalität einfach zu erweitern.
public class Person { private String name; private String dateOfBirth; } public class Student extends Person { private double gpa; } public class Teacher extends Person { private String department; }
Schüler und Lehrer erben beide von der Klasse Person und tragen so zur Wiederverwendung gemeinsamer Eigenschaften bei. Jede Unterklasse kann separate Eigenschaften oder Methoden hinzufügen.
Polymorphismus
Polymorphismus ermöglicht die Implementierung einer Methode auf viele verschiedene Arten, d. h. die Methode kann in einer Unterklasse mit unterschiedlichem Verhalten neu definiert werden.
public class Person { public void introduce() { System.out.println("I am a person."); } } public class Student extends Person { @Override public void introduce() { System.out.println("I am a student."); } } public class Teacher extends Person { @Override public void introduce() { System.out.println("I am a teacher."); } } public class Main { public static void main(String[] args) { Person person = new Person(); Person student = new Student(); Person teacher = new Teacher(); person.introduce(); // I am a person. student.introduce(); // I am a student. teacher.introduce(); // I am a teacher. } }
Die Methode introduce ist in der Klasse Person definiert und wird in den Unterklassen Student und Teacher überschrieben. Auch wenn der Typ Person verwendet wird, verwendet das System beim Aufruf der Methode introduce die entsprechende Methode des tatsächlichen Objekts (Student oder Teacher). ), weist Polymorphismus auf.
Abstraktion
Abstraktion ist eine Methode, mit allgemeinen Konzepten zu arbeiten, ohne sich zu sehr auf spezifische Implementierungsdetails zu konzentrieren, wodurch die Flexibilität erhöht und die Komplexität verringert wird.
public class Student { private String name; private String dateOfBirth; public void registerForCourse(Course course) { course.addStudent(this); } }
Mit Abstraction definieren wir eine abstrakte Klasse (Course) mit generischen Methoden (startCourse()). Unterklassen wie MathCourse und ScienceCourse implementieren diese Methoden im Detail, wodurch das System einfach erweitert und angepasst werden kann.
3. Vorteile der objektorientierten Programmierung:
- Dank der Vererbung können Klassen ohne Wiederholung von Code erweitert werden, wodurch Redundanz minimiert und die Effizienz gesteigert wird.
- Sparen Sie Zeit und steigern Sie die Produktivität.
- Das Konzept von Klassen und Objekten trägt dazu bei, reale Entitäten natürlicher und klarer auf Computern zu simulieren und gleichzeitig die Einschränkungen der strukturorientierten Programmierung zu überwinden.
Das obige ist der detaillierte Inhalt vonFühren Sie die Objektorientierung ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.