
Willkommen bei Object -oriented Programmierspeicher mit Java ! Es bietet eine umfassende Ressource zum Erforschen und Lernen von Objekt -orientierten Programmen durch Java -Sprache.
Objektorientierte Programmierung (OOP - OOP - OOP -ORIENTED -Programmierung) ist ein beliebtes Programmiermodell, das in der Softwareentwicklung häufig verwendet wird. Es basiert auf den Konzepten von "Objekten", die Entitäten sind, die sowohl Daten (Attribute) als auch Methoden (Verhaltensweisen) kombinieren. OOP konzentriert sich auf Softwaredesign basierend auf interaktiven Objekten anstelle des Prozesses und der Logik wie in der prozeduralen Programmierungsprogrammierung.
Die objektorientierte Programmierung basiert auf 4 Grundprinzipien, nämlich: Verpackung, Vererbung, Polymorphismus und Zusammenfassung. Jedes dieser Prinzipien bietet einen Ansatz zur Lösung von Problemen in der Softwareentwicklung und zur effektiveren Verwaltung von Quellcode.
1. Kapselung : Dies ist das Konzept, die internen Bereitstellungsdetails des Objekts zu verbergen, wodurch Benutzer direkt auf die Daten im Inneren zugreifen. Die Verpackung schützt die Daten und das Verhalten des Objekts vor unerwünschten Interventionen und bietet eine einheitliche Schnittstelle, um mit dem Objekt zu interagieren.
// Lớp Employee (Nhân viên) chứa các thuộc tính: tên, tuổi, lương
public class Employee {
// Các biến dữ liệu riêng tư để ngăn chặn truy cập trực tiếp từ bên ngoài lớp
private String name ;
private int age ;
private double salary ;
// Constructor (hàm tạo) để khởi tạo các giá trị của đối tượng
public Employee ( String name , int age , double salary ) {
this . name = name ;
this . age = age ;
this . salary = salary ;
}
// Các phương thức getter để truy cập các biến dữ liệu
public String getName () {
return name ;
}
public int getAge () {
return age ;
}
public double getSalary () {
return salary ;
}
// Các phương thức setter để cập nhật giá trị của các biến dữ liệu
public void setName ( String name ) {
this . name = name ;
}
public void setAge ( int age ) {
this . age = age ;
}
public void setSalary ( double salary ) {
this . salary = salary ;
}
}
// Lớp Main để thực thi mã
public class Main {
public static void main ( String [] args ) {
// Tạo đối tượng của lớp Employee
Employee emp = new Employee ( "John Doe" , 30 , 50000 );
// Truy cập và cập nhật thông qua các phương thức getter và setter
System . out . println ( "Employee name: " + emp . getName ());
emp . setSalary ( 55000 );
System . out . println ( "Updated salary: " + emp . getSalary ());
}
} In diesem Beispiel werden die name , age und salary als private gekennzeichnet, was bedeutet, dass sie nicht direkt von der Außenseite des Employee zugegriffen werden können. Stattdessen werden getName() , getAge() , getSalary() , setName() , setAge() und setSalary() bereitgestellt, um den Wert dieser Variablen zuzugreifen und zu aktualisieren, wodurch die Verpackung sichergestellt wird.
2. Vererbung (Vererbung): Erbschaft ermöglicht es einer neuen Schicht, Eigenschaften und Methoden aus einer vorhandenen Schicht zu erben. Diese neue Ebene kann die Vererbungskomponenten hinzufügen oder ändern, um ihre eigenen Bedürfnisse zu erfüllen, wodurch der Quellcode effektiv wiederverwendet und erweitert wird.
// Lớp cơ sở (hay lớp cha): Employee
public class Employee {
private String name ;
private int age ;
// Constructor của lớp Employee
public Employee ( String name , int age ) {
this . name = name ;
this . age = age ;
}
// Getter và Setter
public String getName () {
return name ;
}
public void setName ( String name ) {
this . name = name ;
}
public int getAge () {
return age ;
}
public void setAge ( int age ) {
this . age = age ;
}
// Phương thức để hiển thị thông tin
public void displayInfo () {
System . out . println ( "Name: " + name + ", Age: " + age );
}
}
// Lớp dẫn xuất (hay lớp con): Manager kế thừa từ Employee
public class Manager extends Employee {
private double salary ;
// Constructor của lớp Manager
public Manager ( String name , int age , double salary ) {
super ( name , age ); // Gọi constructor của lớp cơ sở (lớp cha)
this . salary = salary ;
}
// Phương thức mới của lớp Manager
@ Override
public void displayInfo () {
// Gọi phương thức displayInfo của lớp cơ sở (lớp cha)
super . displayInfo ();
System . out . println ( "Salary: " + salary );
}
}
public class Main {
public static void main ( String [] args ) {
// Tạo đối tượng Manager
Manager manager = new Manager ( "Alice Johnson" , 42 , 75000 );
manager . displayInfo (); // Hiển thị thông tin của Manager
}
}Employee ist eine Basisklasse, die grundlegende Informationen wie Name und Alter enthält.Manager -Ebene ist die Derivatklasse des Employee und fügt das salary hinzu.Manager -Ebene verwendet Schlüsselwort, das sich auf Erben aus der Employee extends . Der Konstruktor des Manager namens super(name, age) ; Initialisieren der von der Employee geerbten Eigenschaften.displayInfo() wird in der Manager überschrieben, um weitere Informationen zum Gehalt hinzuzufügen und displayInfo() -Methode der Basisklasse aufzurufen, um die grundlegenden Informationen anzuzeigen.3. Polymorphismus : Polymorphismus ist die Fähigkeit, bei der verschiedene Klassen über dieselbe Grenzfläche verwendet werden können. Die Methode kann in einer Basisschicht definiert werden und werden durch die gleichnamigen Methoden in den Ableitungsklassen ersetzt, sodass die Objekte über die gemeinsame Schnittstelle verarbeitet werden können, ohne ihren spezifischen Datentyp zu kennen.
In Java wird der Polymorphismus durch die Methode des Überhod -Überlags und Aufladens der Methode (Methodenüberladung) exprimiert.
class Animal {
void speak () {
System . out . println ( "Animal speaks" );
}
}
// Lớp Dog (chó) kế thừa lớp Animal (động vật)
class Dog extends Animal {
// Lớp Dog ghi đè phương thức speak() của lớp cha
@ Override
void speak () {
System . out . println ( "Dog barks" );
}
}
// Lớp Cat (mèo) kế thừa lớp Animal (động vật)
class Cat extends Animal {
// Lớp Dog ghi đè phương thức speak() của lớp cha
@ Override
void speak () {
System . out . println ( "Cat meows" );
}
}
public class Main {
public static void main ( String [] args ) {
Animal myAnimal = new Animal ();
Animal myDog = new Dog ();
Animal myCat = new Cat ();
myAnimal . speak (); // Prints "Animal speaks"
myDog . speak (); // Prints "Dog barks"
myCat . speak (); // Prints "Cat meows"
}
} In diesem Beispiel wird die speak() -Methode in den Dog und Cat überschrieben. Wenn Java die speak() -Methode auf dem Objekt des Kindes aufgerufen hat, bestimmt er, welche Methode zum Zeitpunkt des Laufens aufgerufen wird, abhängig von der Art des Objekts, dass die Referenzvariable kommt.
class Printer {
// In chuỗi
void print ( String data ) {
System . out . println ( "String: " + data );
}
// In số nguyên
void print ( int data ) {
System . out . println ( "Integer: " + data );
}
// In số thực
void print ( double data ) {
System . out . println ( "Double: " + data );
}
}
public class Main {
public static void main ( String [] args ) {
Printer printer = new Printer ();
// Gọi phương thức print nạp chồng
printer . print ( "Hello, World!" );
printer . print ( 123 );
printer . print ( 98.76 );
}
}Printer verfügt über drei Versionen der print , die jeweils einen bestimmten Datentyp verarbeiten: String , int und double .print .Der Polymorphismus wird auch durch den Mechanismus der Verwendung der Grenzfläche deutlich exprimiert. Die Schnittstelle in Java ist eine Möglichkeit, einen höheren Polymorphismus zu erreichen, sodass eine Ebene viele Schnittstellen und eine Schnittstelle bereitstellen kann, die von verschiedenen Ebenen bereitgestellt werden kann.
Angenommen, wir haben eine Schnittstelle CanFly und zwei Schichten Bird und Airplane implementieren diese Schnittstelle:
interface CanFly {
void fly ();
}
class Bird implements CanFly {
public void fly () {
System . out . println ( "The bird flaps its wings to fly." );
}
}
class Airplane implements CanFly {
public void fly () {
System . out . println ( "The airplane turns on its engines to fly." );
}
}
public class TestPolymorphism {
public static void main ( String [] args ) {
CanFly myBird = new Bird ();
CanFly myAirplane = new Airplane ();
myBird . fly (); // Output: The bird flaps its wings to fly.
myAirplane . fly (); // Output: The airplane turns on its engines to fly.
}
}CanFly definiert die fly() -Methode, ohne den Körperkörper bereitzustellen.Bird als auch Airplane setzen die fly() -Methode auf ihre eigene Weise ein.myBird als auch myAirplane -Objekte werden über die Schnittstellen CanFly referenziert. Wenn wir die fly() -Methode aufrufen, ermöglicht es uns, uns nicht um das Objekt des Objekts zu kümmern. Wir wissen nur, dass sie fliegen können.4. Abstraktion : Zusammenfassung ermöglicht es den Programmierern, sich darauf zu konzentrieren, was ein Objekt macht, ohne sich darum kümmern, wie es geht. Es erstellt eine Basisklasse, die eine allgemeine Schnittstelle beschreibt, die die Ableitungsklassen implementieren und die Verwaltung der Komplexität des Systems vereinfachen.
In Java kann Abstract auf zwei Arten durchgeführt werden:
Die abstrakte Klasse ist ein Objekt, das nicht erstellt werden kann und abstrakte Methoden ohne Körper enthalten kann.
abstract class Animal {
// Phương thức trừu tượng
abstract void makeSound ();
// Phương thức bình thường
void breathe () {
System . out . println ( "Breathing..." );
}
}
class Dog extends Animal {
// Triển khai phương thức trừu tượng trong lớp con
void makeSound () {
System . out . println ( "Bark" );
}
}
public class Main {
public static void main ( String [] args ) {
Animal myDog = new Dog ();
myDog . makeSound (); // In ra "Bark"
myDog . breathe (); // In ra "Breathing..."
}
}Animal ist eine abstrakte Schicht mit abstrakten Methoden makeSound() .Dog ist eine ererbte Klasse vom Animal und muss eine spezifische Bereitstellung für die abstrakte Methode makeSound() bereitstellen.Schnittstelle (Schnittstelle) kann nur abstrakte Methoden ohne Bereitstellung enthalten.
interface Vehicle {
void start ();
void stop ();
}
class Car implements Vehicle {
public void start () {
System . out . println ( "Car starting" );
}
public void stop () {
System . out . println ( "Car stopping" );
}
}
class Bike implements Vehicle {
public void start () {
System . out . println ( "Bike starting" );
}
public void stop () {
System . out . println ( "Bike stopping" );
}
}
public class Main {
public static void main ( String [] args ) {
Vehicle myCar = new Car ();
Vehicle myBike = new Bike ();
myCar . start (); // In ra "Car starting"
myCar . stop (); // In ra "Car stopping"
myBike . start (); // In ra "Bike starting"
myBike . stop (); // In ra "Bike stopping"
}
} Hier ist Vehicle eine Schnittstelle, die zwei abstrakte Methoden definiert: start() und stop() . Car und Bike bereitstellen diese Schnittstelle und bieten für jede Methode eine spezifische Bereitstellung.
Ähnlichkeit:
Unterschiede:
| Zusammenfassung Klasse | Schnittstelle | |
|---|---|---|
| Zweck | - oft verwendet, wenn Sub -Klassen viele gemeinsame Funktionen haben und einen allgemeinen Ort benötigen, um den Code zu platzieren, der wiederverwendet werden kann. -Helfen Sie dabei, ein grundlegendes Muster für den Unterschicht zu definieren. Stellen Sie sicher, dass die gesamte Sub -Klasse es erbt, einem gemeinsamen Design zu folgen. | - oft verwendet, um einen Vertrag für eine Funktion ohne Pflege zu definieren. - Ideal für Funktionen, die sehr unterschiedlich implementiert werden können. - Gut für die Definition von Methoden, die eine Klasse durchführen kann. |
| Einsatz | - Kann sowohl abstrakte Methoden (kein Körper) als auch nicht -Abstrichmethoden (mit dem Körper) enthalten. - Abstrakte Klassen können auch Datenfelder und Konstruktoren enthalten. | - Anfangs ermöglicht es nur die Definition abstrakter Methoden ohne Körper. - Ab Java 8 ermöglicht die Schnittstelle auch die Definition von Körpermethoden durch Standardmethoden und statische Methoden. |
| Multi -Inhorsitanz | - Eine Klasse kann nur von einer einzelnen abstrakten Schicht erben. - Dies begrenzt die Flexibilität der Multi -Inhersitanz wie in der Schnittstelle. | - Java ermöglicht es einer Ebene, mehrere Schnittstellen gleichzeitig auszuführen und ein Multi -Inheritanzformular bereitzustellen. |
| Kiefer | - Es kann Einschränkungen geben, die dazu beitragen, die Anfangsbedingungen für die Klasse festzulegen. | - Es gibt keinen Konstruktor. |
| Datenfeld | - Im Gegensatz zur Schnittstelle können abstrakte Klassen Datenfelder haben, die keine Statik und endgültig sind. - Der Sub -Layer kann separate Attribute haben, die aus der abstrakten Schicht geerbt wurden. | - Die Schnittstelle unterstützt nicht, dass das Datenfeld nicht statisch und endgültig ist. - Alle in der Schnittstelle deklarierten Variablen werden automatisch als öffentliches statisches Finale betrachtet. |
Die von der Objektorientierung vorliegende Programmierung bietet viele herausragende Vorteile in der Softwareentwicklung und macht es zu einem der Hauptdesign- und Programmiermodelle in der Informationstechnologiebranche. Hier sind die Vorteile davon:
Wiederverwendung Code : OOP ermöglicht es den Programmierern, den Quellcode über den Vererbungsmechanismus wiederzuverwenden. Die Schicht des Kindes kann die Merkmale der Vaterklasse erben, ohne diesen Code neu zu schreiben. Dies hilft, die Programmierarbeit zu reduzieren, potenzielle Fehler zu minimieren und die Softwareentwicklung zu beschleunigen.
Einfach zu verwalten und zu beheben : Die Verpackungsstruktur in OOP verbergt die Bereitstellungsdetails aus und bietet nur die Schnittstelle (Schnittstelle), die für Benutzer erforderlich ist. Dies erleichtert die Systemwartung und das Aktualisieren, da sich die Änderung eines Objekts nicht auf andere Objekte auswirkt.
Praktische Modellierung : OOP ermöglicht das Programmieren, reale Entitäten in Form von Softwareobjekten zu modellieren, sodass der Quellcode das Verständnis und die Verwaltung erleichtert. Die Verwendung von Objekten wie Daten und Verhaltensweisen in der realen Welt trägt dazu bei, Software zu entwickeln, um dem Programmierer intuitiver und näher zu werden.
Erweiterung : Dank der Fähigkeit, zu erben und zu packen, ist OOP leicht zu erweitern. Eine neue Ebene kann mit Vererbung aus einer oder mehreren Schichten erstellt werden, die existieren, ohne diese Schichten zu beeinflussen. Dies hilft dem System, flexibel zu wachsen und sich schnell an neue Bedürfnisse anzupassen.
Sicherheit : Verpackung hilft nicht nur, die Implementierungsdetails zu verbergen, sondern bietet auch eine Sicherheitsebene. Daten in einem Objekt sind vor externen direkten Zugriff geschützt, um die Integrität und Sicherheit von Daten zu gewährleisten.
Java ist eine der beliebtesten Programmiersprachen, mit denen Objekte aus plausiblen Gründen unterrichtet werden.
Java ist eine reine Objekt -orientierte Sprache , was bedeutet, dass alles in Java Objekt oder Klasse ist. Konzepte wie Vererbung, Verpackung, Polymorphismus und Zusammenfassung sind vollständig in die Sprache integriert. Dies hilft den Lernenden, während der Programmierung auf natürliche Weise auf natürliche Weise auf OP -Prinzipien zuzugreifen und sie zu üben.
Java hat eine klare und einfache Syntax. Die Syntax von Java basiert auf C/C ++, hat jedoch einige komplexe Merkmale wie den direkten Cursor entfernt, was es zu einer idealen Sprache macht, um Anfänger zu unterrichten. Die Beseitigung dieser komplexen Merkmale hilft den Lernenden dabei, sich darauf zu konzentrieren, die Kernkonzepte von OOP zu verstehen, ohne in verwirrenden Details festgefahren zu werden.
Java ist eine unabhängige Sprachfundament , kann auf jedem Betriebssystem mit Java (JVM) virtueller Maschine ausgeführt werden. Dies bedeutet, dass Java -Programme auf verschiedenen Plattformen konsequent entwickeln und implementieren können, ohne den Code zu ändern. Diese Flexibilität ist ideal für die Lernumgebung, in der Schüler und Lehrer eine Vielzahl von Hardware und Software verwenden können.
Während Sie dieses Archiv zum Lernen verwenden, sollten Sie dem unten genannten Anordnungsprinzip folgen. Lesen Sie die Elemente gemäß den Regeln von oben nach unten. Die ersten Teile sind die Grundlage für den nächsten Inhalt. Insbesondere für den Anhang , den Sie sich jederzeit beziehen können, enthält er einige Bücher, die ich zum Entwerfen dieses Archivs verwende.
Um zu synchronisieren und leicht zu steuern, enthält die Hauptschicht die Hauptmethode, um den Code so auszuführen wie der Lektionsinhalt. Andere Klassen in der Lektion zu veranschaulichen. Zum Beispiel befindet sich die Lektion über die Schnittstelle in
Interface.javaJava hat Klassen:Movable,Trackable,Drone,Interface,Movable,Trackable,Dronehaben den Einfluss der Interpretation von Unterrichtskenntnissen undInterface, um Code aus den vorherigen Klassen auszuführen.
Dieses Element ist fast die gleiche Reihenfolge wie mein Speicher: Datenstruktur und Algorithmus unter Verwendung von C/C ++ , außer dass in Java -Sprache geschrieben wurde. Es wird einige Unterschiede zwischen den beiden Sprachen geben, die Leser können sie selbst vergleichen.
Java ist sowohl eine Programmiersprache als auch eine Übersetzung (und interpretiert . In Java wird der Quellcode in Bytecode übersetzt, was einfache binäre Indikatoren ist, die wie Computercode für Computer funktionieren. Im Gegensatz zu C oder C ++ ist Java's Bytecode nicht der native Maschinencode für jeden spezifischen Prozessor, aber für eine Java (JVM) Virtual -Maschine.
Dieser Bytecode wurde dann von der java -virtuellen Maschine übersetzt und ausgeführt, als ob es sich um einen nativen Maschinencode handelte. JVM arbeitet wie ein aktives Betriebssystem bei der Verwaltung von Speicher- und Verarbeitungsbefehlen und stellt die Sicherheit und das Handy des Codes sicher. Alle Eigenschaften der Java -Sprache sind unabhängig vom spezifischen System des Basissystems klar definiert, was Java dabei hilft, auf vielen verschiedenen Plattformen ohne Code -Bearbeitung homogen zu führen.
JVM bietet eine sichere Durchsetzungsumgebung, in der es ähnliche Funktionen wie ein Betriebssystem ausführt. Es verwaltet Speicher, führt Befehle aus, die auf Stapeln basieren und Wassertypen verarbeiten. Dies minimiert Sicherheitsrisiken und erhöht die Stabilität der Anwendung.
Unabhängig davon, ob es C und C ++ in Bezug auf die Syntax ähnlich aussieht, ist Java kein direkter Nachkomme von C oder der nächsten Version von C ++. Java hat eher mit dynamischen Sprachen wie SmallTalk und Lisp als C. Java erbt die Philosophie von C einer guten Sprache, die kompakt sein sollte, leicht zu erinnern, aber das Wortschatz durch Java -Klassenpakete erweitert.
Die Drehbuchsprachen wie Perl, Python und Ruby sind sehr beliebt, da sie für sichere und vernetzte Anwendungen geeignet sind. Die meisten Skriptsprachen sind jedoch nicht für ernsthafte Programme mit großem Gewinnstätten ausgelegt. Sie sind aufgrund der losen Programmstruktur und des einfachen Datensystems oft nicht für große oder komplexe Projekte geeignet.
Java bietet eine sichere Plattform, um höhere Rahmenbedingungen und sogar andere Sprachen zu entwickeln und die Einfachheit und Merkmale von Java zu kombinieren, die eine schnelle und einfache Entwicklung von Anwendungen ermöglichen. Java hat auch aus den Merkmalen von SmallTalk gelernt und verbessert sie, insbesondere bei der Verwendung des Bytecode -Testsatzes, um die Genauigkeit des Kampagnencode zu gewährleisten, um die Leistung zu verbessern und Sicherheit zu gewährleisten als SmallTalk.
Java ist als sichere Sprache ausgelegt, nicht nur gegen Softwarefehler, sondern auch häufige Probleme in Bezug auf Design und Programmierung. Java bietet viele Schutzschichten aus dem Sicherheitstest des Codes, bevor der Klassenlader geladen wird, ein Bytecode -Lastmechanismus der Java -Interpretation und erzeugt eine "Wand" um unzuverlässige Klassen. Diese Merkmale sind die Grundlage für Sicherheitsrichtlinien mit hoher Ebene, die verschiedene Arten von Aktivitäten für jede Anwendung ermöglichen oder nicht.
Java startet von einem "weißen Board" und kann daher komplexe oder kontroverse Merkmale in anderen Sprachen vermeiden. Beispielsweise erlaubt Java den Programmierern nicht, Betreiber (z. B. + Hay -) zu regenerieren, keine Geldverarbeitung Geld wie Makros oder #definierende Aussagen, Dinge, die häufig in anderen Sprachen verwendet werden, um die Abhängigkeit von der Plattform zu unterstützen.
Java bietet außerdem eine klare Paketstruktur für die Organisation von Klassendateien und hilft dem Kompilierungsprozess, einige Funktionen des traditionellen Made -hergestellten Tools effektiv zu übernehmen. Alle Datentypinformationen werden in den kompilierten Java -Klassen erhalten, ohne dass überschüssige Quellentiteldateien wie in C/C ++ erforderlich sind. Dies erleichtert das Lesen von Java -Code und weniger Kontext.
Java unterstützt nur die Vererbung (jede Klasse hat nur eine "Vater" -Klasse), ermöglicht jedoch die Vererbung vieler Schnittstellen. Die Schnittstelle in Java, ähnlich der abstrakten Schicht in C ++, identifiziert das Verhalten eines Objekts, ohne seine Ausführung zu verteidigen. Dies ist ein leistungsstarker Mechanismus, der es dem Entwickler ermöglicht, einen "Vertrag" des Verhaltens des Objekts zu definieren, der unabhängig auf eine bestimmte Objektausführung verwendet werden kann.
Java eliminiert die Verwendung von Cursors, die auf jeden Speicherbereich verweisen und automatisch Müllsammlung und hochstufiges Segment hinzufügen können. Diese Merkmale tragen dazu bei, viele Probleme im Zusammenhang mit Sicherheit, Konvertierung und Optimierung zu beseitigen, auf die andere Sprachen häufig begegnen. In Java werden keine verwendeten Probanden mehr automatisch Speicher wiederhergestellt und die manuellen Speicherverwaltungsfehler minimieren.
Java verwendet den traditionellen Cursor nicht, sondern ist enger und sicherer Referenz. Die Probanden in Java, mit Ausnahme von primitiven Typen, werden durch Referenz zugegriffen. Dies ermöglicht es, komplexe Datenstrukturen sicher in einem Datentyp ohne Risiken im Zusammenhang mit dem Cursor in C/C ++ zu erstellen.
Java wurde dank des starken Ausnahmebetriebsmechanismus auf intelligente und effektive Weise auf Fehler umgehen. In Java werden Fehler nicht nur an einem bestimmten Ort im Programm über den "Catch" -Codeblock erfasst und verarbeitet, sondern auch in Ausnahmen gepackt. Jedes dieser Objekte bringt Informationen über die Ursache des Fehlers mit sich und erleichtert den Programmierern, Fehler korrekt zu verstehen und zu verarbeiten. Die Java -Übersetzung verlangt von der Methode, um die Ausnahmen zu deklarieren, die sie ergeben kann, oder um sie sofort zu handhaben. Dies hilft, die Fehlerinformationen mit anderen Informationen wie dem Rückgabetyp oder der Methode der Methode auf die gleiche Ebene zu bringen. Dadurch können Sie beim Programmieren mögliche Situationen vorhersagen und vorbereiten, um sicherzustellen, dass Ihre Bewerbung stabiler und sicherer funktioniert.
In der Software -Programmierung und -entwicklung ist die Namenskonvention eine Sammlung von Regeln für die Auswahl von Namen von Variablen, Jaws, Klassen und anderen Objekten im Quellcode. Die Identifikationskonvention erleichtert den Quellcode leichter zu lesen, leicht zu verstehen und leichter zu warten. Mein Speicher entspricht ausschließlich dieser Konvention, die unten erwähnt wird.
Klasse: Der Unterrichtsname beginnt immer mit dem ausgedruckten Buchstaben (Pascalcase). Wenn der Klassenname aus vielen Wörtern besteht, muss jedes Wort auch mit Blumendruck beginnen. Zum Beispiel: Student , Car , ColorChooser .
Schnittstelle: Wie in der Klasse verwendet auch der Name der Schnittstelle Pascalcase. Oft beginnt der Schnittstellenname mit Großbuchstaben wie I oder verwendet das Dumb/Suffix wie able oder ible um die Funktion zu beschreiben, wie z. B. Runnable , Accessible .
Die Methode der Methode beginnt immer in normalen Buchstaben und folgt Kamelcase. Der Methodenname sind normalerweise die Verben oder Verbphrasen, die die Aktion beschreiben, die die Methode ausführt. Zum Beispiel: getName() , calculateTotalWidth() .
Der variable Name sollte auch mit normalen Buchstaben und gefolgt von Kamelase beginnen. Der variable Name sollte klar sein und den Wert beschreiben, den sie darstellen. Zum Beispiel: height , numberOfStudents .
Ein Beispiel für die Dog :
package com . example . animals ;
/**
* A generic Dog class that can be used as a base class for specific breeds.
*/
public class Dog {
private String name ;
private int age ;
/**
* Constructor for Dog class.
*
* @param name The name of the dog.
* @param age The age of the dog.
*/
public Dog ( String name , int age ) {
this . name = name ;
this . age = age ;
}
/**
* Returns the name of the dog.
*
* @return The name of the dog.
*/
public String getName () {
return name ;
}
/**
* Sets the name of the dog.
*
* @param name New name for the dog.
*/
public void setName ( String name ) {
this . name = name ;
}
/**
* Returns the age of the dog.
*
* @return The age of the dog.
*/
public int getAge () {
return age ;
}
/**
* Sets the age of the dog.
*
* @param age New age for the dog.
*/
public void setAge ( int age ) {
this . age = age ;
}
/**
* Provides a string representation of the dog.
*
* @return A string describing the dog's details.
*/
@ Override
public String toString () {
return "Dog[name=" + name + ", age=" + age + "]" ;
}
}| Zugang zu Indikationen | öffentlich | Geschützt | Standard | Privat | |
|---|---|---|---|---|---|
| Zusammen mit Paket | Innerhalb der Klasse | Haben | Haben | Haben | Haben |
| Sub -Klasse | Haben | Haben | Haben | Sind nicht | |
| Andere Klasse | Haben | Haben | Haben | Sind nicht | |
| Anderes Paket | Sub -Klasse | Haben | Haben | Sind nicht | Sind nicht |
| Andere Klasse | Haben | Sind nicht | Sind nicht | Sind nicht | |
Unified Modeling Language (UML) ist ein Standard -Grafikmodellierungs -Tool, mit dem verschiedene Aspekte der Anwendungssoftware skizzieren, beschrieben und dokumentiert werden. Es ist besonders nützlich im Bereich der Objekt -orientierten Programmierung, da es eine intuitive Möglichkeit bietet, Klassen, Objekte und Beziehungen zwischen ihnen zu zeigen. UML enthält viele verschiedene Arten von Diagrammen, aber im Kontext der objektorientierten Programmierung sind Klassendiagramm (Klassendiagramme) und interaktives Diagramm (Interaktionsdiagramme) die beiden am häufigsten verwendeten Typen.
Mit UML können Programmierer die Struktur des Systems unter Verwendung von Klassendiagrammen beschreiben. Dieses Diagramm zeigt Klassen im System, Attribute, ihre Methoden und vor allem die Beziehung zwischen Klassen wie Vererbung, Verknüpfung, Synthese und Kombination. Dies hilft den Programmierern, System systematischer zu verstehen und zu entwerfen.
Sobald das UML -Diagramm abgeschlossen ist, kann es als Grundlage für das Schreiben von Quellcode verwendet werden. In OOP ist die Übertragung vom Schaltendiagramm zum Quellcode (normalerweise Java, C#oder C ++) aufgrund der Ähnlichkeit zwischen den in UML beschriebenen Konzepten und der Schichtstruktur in diesen Programmiersprachen recht direkt.
UML hilft dabei, die Beziehungen zwischen Objekten klar zu definieren und die Art der Kommunikation und die Interaktion zwischen ihnen durch das Sequenzdiagramm (Sequenzdiagramme) und das Kollaborationsdiagramm (Kollaborationsdiagramme) hervorzuheben. Dies hilft den Programmierern, den Datenfluss und die Kontrolle in der Anwendung zu verstehen.
Vor dem Schreiben von Codes hilft UML der Entwicklungsgruppe, Entwurfsprobleme zu erkennen und zu korrigieren. Die Einheit bei der Verwendung von UML hilft den Mitgliedern in der Gruppe auch, die Ideen des anderen leicht zu verstehen und so die Effizienz der Arbeitskoordination zu erhöhen.
UML bietet vollständige Dokumente für die Software, die in der Stufe Wartungs- und Software -Upgrade sehr nützlich ist. Ein gutes UML -Diagramm kann neuen Personen helfen, die am Projekt teilnehmen, die Struktur und Funktion des Systems schnell erfassen.
Das Klassendiagramm (Klassendiagramm) ist eine der in UML verwendeten Diagramme und spielt eine wichtige Rolle bei der Modellierung des Softwaresystems. Das Klassendiagramm bietet einen Überblick über die Struktur einer Anwendung, indem die Systemebenen, deren Attribute und Methoden und die Beziehung zwischen diesen Schichten angezeigt werden. Zu diesen Beziehungen können: Link (Verein), Vererbung (Vererbung), Durchsetzung (Realisierung), Abhängigkeit, Gügel, Zusammensetzung.
Eine Klasse stellt ein Konzept dar, das Status (Attribut) und Verhalten (Methode) enthält. Jedes Attribut hat einen Typ. Jede Methode hat eine Signatur. Der Klassenname ist die einzige obligatorische Informationen.
Betrachten Sie das folgende Beispiel:

Dieses UML -Diagramm entspricht dem Animal im Code wie folgt:
public class Animal {
// Các thuộc tính của lớp
public String name ; // Biến thành viên công khai cho tên
private int age ; // Biến thành viên riêng tư cho tuổi
private String species ; // Biến thành viên riêng tư cho loài
// Phương thức getter cho thuộc tính name
public String getName () {
return name ;
}
// Phương thức setter cho thuộc tính name
public void setName ( String name ) {
this . name = name ;
}
} Symbole + , - und # und # und # sowie Methodennamen in einer Ebene geben die Zugangskapazität des Attributs und die Methode an. Speziell:
+ zeigt das Attribut oder die Methode der Öffentlichkeit an (öffentlich).- Angeben der Eigenschaften oder Datenschutzmethoden (privat).# gibt die Eigenschaft oder die Schutzmethode (geschützt) an.
Flyable mit einer fly() -Methode vorhanden ist, kann die Bird diese Schnittstelle durch Bereitstellen der fly() -Methode ausführen.School mag viele Objekte der Teacher haben, aber die Lehrer existieren immer noch unabhängig von der Schule.House kann viele Objekte des Room enthalten. Wenn das House storniert wird, werden auch die Room storniert.| Nachlass | Versammeln | |
|---|---|---|
| Definieren | - Die Vererbung ist ein Mechanismus, bei dem eine Schicht (als Sub -Layer bezeichnet) die Natur und Methode einer anderen Schicht (als übergeordnete Klasse bezeichnet) erben kann. - Erlauben Sie der Unterteilung, den Code des Vaters ohne Umschreiben wiederzuverwenden. - entsprechend der Beziehung "is-a". | - Element ist eine Form der "dort" Beziehung zwischen zwei Schichten. - Zeigt eine Beziehung an, in der ein Objekt andere Objekte enthalten oder sich darauf beziehen kann, aber die beiden Probanden können unabhängig existieren. - entspricht der Beziehung "Has-a". |
| Zweck | - Verwenden Sie den Code wieder und verbessern Sie das Modul der Anwendung. - Unterstützen Sie auch den Polymorphismus und ermöglichen es, dass die Methode des Kindes die Methode der übergeordneten Klasse überschreiben oder erweitern kann. - Zum Beispiel: Animal Class hat eine Move () -Methode, Vogel- und Fischklassen können ein Tier erben und move () methode anwenden oder überschreiben, um ihrer sich bewegenden Natur zu entsprechen. | - Darstellung der Beziehung zwischen Objekten, wobei die Objekte eine teilweise Beziehung zueinander haben, aber nicht vollständig voneinander abhängig sind. - Böbern Sie bei der Flexibilität in der Datenstruktur und verwalten komplizierten Objekten. - Zum Beispiel kann die quadratische Schicht Objekte der Punktschicht haben. Jedes Quadrat besteht aus vier Objekten der Punktschicht (was die Eckpunkte anzeigt), aber die Punkte können unabhängig ohne den Spitze des Quadrats existieren. |
| Abhängigkeit | - Die Sub -Klasse hängt stark von der Klasse des Vaters ab, da sie direkt die Eigenschaften und Methoden des Vaters verwendet. | - Relevante Themen können unabhängig existieren; Sie hängen nicht stark zusammen. |
| Fähigkeit | - Erweitern oder passen Sie die Ebene des Vaters an. - Modellierung der dezentralen Beziehung. | - Verwalten zugehörigen Objekten. - Modellierung physischer Beziehungen. |
Betrachten Sie das folgende Beispiel:

Das Bereitstellen dieses UML -Diagramms in Java ist wie folgt:
public class Person {
private String name ;
private int age ;
private Address address ; // Liên kết sử dụng lớp Address
public Person ( String name , int age , Address address ) {
this . name = name ;
this . age = age ;
this . address = address ;
}
// Getter và Setter cho các thuộc tính
public String getName () {
return name ;
}
public void setName ( String name ) {
this . name = name ;
}
public int getAge () {
return age ;
}
public void setAge ( int age ) {
this . age = age ;
}
public Address getAddress () {
return address ;
}
public void setAddress ( Address address ) {
this . address = address ;
}
}
// Định nghĩa lớp Student kế thừa từ Person
public class Student extends Person {
public Student ( String name , int age , Address address ) {
super ( name , age , address );
}
}
// Định nghĩa lớp Teacher kế thừa từ Person
public class Teacher extends Person {
public Teacher ( String name , int age , Address address ) {
super ( name , age , address );
}
}
// Định nghĩa lớp Staff kế thừa từ Person
public class Staff extends Person {
public Staff ( String name , int age , Address address ) {
super ( name , age , address );
}
}
// Định nghĩa lớp Address
public class Address {
private String street ;
private String city ;
private String country ;
public Address ( String street , String city , String country ) {
this . street = street ;
this . city = city ;
this . country = country ;
}
// Getter và Setter cho các thuộc tính
public String getStreet () {
return street ;
}
public void setStreet ( String street ) {
this . street = street ;
}
public String getCity () {
return city ;
}
public void setCity ( String city ) {
this . city = city ;
}
public String getCountry () {
return country ;
}
public void setCountry ( String country ) {
this . country = country ;
}
}
// Định nghĩa lớp Department chứa Teacher và Course
public class Department {
private String name ;
private List < Teacher > teachers ; // Aggregation
private List < Course > courses ; // Composition
public Department ( String name ) {
this . name = name ;
this . teachers = new ArrayList <>();
this . courses = new ArrayList <>();
}
// Phương thức thêm giáo viên và khóa học
public void addTeacher ( Teacher teacher ) {
teachers . add ( teacher );
}
public void addCourse ( Course course ) {
courses . add ( course );
}
}
// Định nghĩa lớp Course
public class Course {
private String courseName ;
private List < Teacher > teachers ; // Association
public Course ( String courseName ) {
this . courseName = courseName ;
this . teachers = new ArrayList <>();
}
public void addTeacher ( Teacher teacher ) {
teachers . add ( teacher );
}
}
// Định nghĩa interface Maintainable
public interface Maintainable {
void maintain ();
}
// Định nghĩa lớp School
public class School implements Maintainable {
private String name ;
private List < Department > departments ; // Composition
public School ( String name ) {
this . name = name ;
this . departments = new ArrayList <>();
}
public void addDepartment ( Department department ) {
departments . add ( department );
}
// Triển khai phương thức từ interface Maintainable
@ Override
public void maintain () {
System . out . println ( "Maintaining the school facilities..." );
// Logic bảo trì cơ sở vật chất có thể được thực hiện ở đây
}
}