Der Zweck dieses Artikels ist es, es Menschen (einschließlich mir), die allergisch gegen Objektorientierung sind, so einfach wie möglich zu machen: "Objektorientierte Programmierung ist nicht beängstigend".
Da ich ein Anfänger in der Programmierung bin, verstehen Sie bitte, dass die Erklärungen der Begriffe unterschiedlich sein können oder einige Ausdrücke schwer zu verstehen sind.
[Objektorientierte Programmierung-Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF % E3% 83% 88% E6% 8C% 87% E5% 90% 91% E3% 83% 97% E3% 83% AD% E3% 82% B0% E3% 83% A9% E3% 83% 9F% E3 % 83% B3% E3% 82% B0)
Was ist objektorientierte Programmierung?
Objektorientierte Programmierung (Englisch: objektorientierte Programmierung, Abkürzung: OOP) ist eine Sammlung von Daten und Methoden, die eng miteinander in einem Objekt verbunden sind und jeweils unterschiedliche Eigenschaften und Rollen haben. Es ist eine Softwareentwicklungsmethode, die das gesamte Programm durch verschiedene Definitionen von Objekten und die Einstellungen verschiedener Prozesse erstellt, die mit diesen Objekten interagieren.
Was ist objektorientiert?
Der Begriff objektorientiert selbst wurde vom Informatiker Alan Kay geprägt. Kay, der vom Design der 1962 veröffentlichten Sprache "Simula" beeindruckt war, sagte dieses geprägte Wort zum ersten Mal, als er das Sprachdesign von "Smalltalk" erklärte, das er 1972 veröffentlichte. Es wurde in die Welt geschickt. Es ist zu beachten, dass die von Kay gezeigte Objektorientierung, die sich auf die Nachrichtenübermittlung konzentriert, nicht allgemein anerkannt ist und sich nur auf das Programmkonzept von Objekten konzentriert. Gleichzeitig verlagerte sich die Objektorientierung, die Kays Hände verließ, zu einer Interpretation, die sich auf abstrakte Datentypen konzentrierte, und mit der Möglichkeit von "C ++", das 1983 von der Informatikerin Biane Strovestrup in Japan veröffentlicht wurde Die Paradigmen der Einkapselung, Vererbung und des Polymorphismus, die allgemein als die drei Hauptelemente von OOP bezeichnet werden, wurden festgelegt.
Eine Sammlung von Daten und Methoden, die eng miteinander verbunden sind.
Es entspricht der Konstruktionszeichnung bei der Herstellung eines Autos.
Unten ist der Beispielcode.
sample.py
class Car:
def __init__(self):
pass
Es entspricht dem Auto selbst (Entität), das hergestellt wurde.
Unten ist der Beispielcode.
sample.py
class Car:
def __init__(self):
pass
car = Car() #Beispiel
Zum Beispiel Fahrzeugtyp, Nummer, Farbe, Motor, Reifen usw. Und es gibt auch Beschleuniger und Bremsen.
Fügen wir (einige) dieser Informationen der Konstruktionszeichnung hinzu.
Unten ist der Beispielcode.
sample.py
class Car:
def __init__(self, name, color):
self.name = name #Autoname
self.color = color #Autofarbe
def start_engine(self):
print("Ich ließ den Motor an.")
def stop_engine(self):
print("Ich stellte den Motor ab.")
def accelerator(self):
print("Ich trat aufs Gaspedal.")
def brake(self):
print("Ich trat auf die Bremse.")
mycar = Car("Prius", "Weiß") #Instanzgenerierung
mycar.start_engine() #Ich ließ den Motor an. Wird angezeigt
mycar.accelerator() #Ich trat aufs Gaspedal. Wird angezeigt
mycar.brake() #Ich trat auf die Bremse. Wird angezeigt
mycar.stop_engine() #Ich stellte den Motor ab. Wird angezeigt
Lassen wir das vorerst.
Zuvor habe ich im Wikipedia-Zitat ein wenig erwähnt.
Kapselung in der Programmierung (Kapsel oder Englisch: Kapselung) bedeutet, Daten (Attribute) und Methoden (Prozeduren) in einem Objekt zu kombinieren und dessen Inhalt zu verbergen. Das Konzept der Einkapselung kann als eines der konstituierenden Konzepte von Informationen angesehen werden, die sich in D. L. Parnas verstecken.
Objekte in der objektorientierten Programmierung werden durch Kapselung von Informationen nach Klassen erstellt.
Durch die Kapselung werden Informationen ausgeblendet, die Sie nicht an Dritte weitergeben möchten.
In Python wird die Kapselung durchgeführt, indem dem Variablennamen (oder Funktionsnamen) ein Unterstrich vorangestellt wird. In Python ist es jedoch besser, nicht so viel wie möglich zu kapseln. Wenn es einen Unterstrich gibt, sollte dieser nur innerhalb dieser Klasse verwendet werden. Bei zwei Unterstrichen (Dander genannt) ist die Verwendung eingeschränkter. Es ist etwas Besonderes anzurufen, aber es bedeutet nicht, dass Sie es nicht können.
Es kann auch verwendet werden, um komplexe Verarbeitungen leicht zu verschleiern. In diesem Fall sollten Sie es aktiv nutzen. Wenn Sie es mit einem Auto vergleichen, werden verschiedene Kinder im Inneren gemacht, um den Motor zu starten, Der Fahrer muss es nicht wissen.
Unten ist der Beispielcode.
sample.py
class Car:
def __init__(self, name, color):
self.name = name #Autoname
self.color = color #Autofarbe
self._age = "Modell 2020" #Model Jahr
self.__engine = "Benzinmotor" #Motortyp
mycar = Car("Prius", "Weiß")
print(mycar._age) #Möglich,Wird als "2020" angezeigt
mycar._age = "2019" #Substitution ist ebenfalls möglich * Sollte nicht sein
print(mycar.__engine) #Dies führt zu einem Fehler
# AttributeError: 'Car' object has no attribute '__engine'
print(mycar._Car__engine) #Möglich,Es heißt "Benzinmotor", sollte aber nicht
[Vererbung (Programmierung) -Wikipedia](https://ja.wikipedia.org/wiki/%E7%B6%99%E6%89%BF_(%E3%83%97%E3%83%AD%E3%82) % B0% E3% 83% A9% E3% 83% 9F% E3% 83% B3% E3% 82% B0))
Vererbung (Vererbung) ist eines der Konzepte, aus denen sich die Objektorientierung zusammensetzt. Wenn ein Objekt die Eigenschaften eines anderen Objekts erbt, wird gesagt, dass zwischen beiden eine "Vererbungsbeziehung" besteht. (Weggelassen) Wenn B A erbt, gilt im Allgemeinen eine semantische Beziehung (Is-a-Beziehung) von "B ist ein A." (B ist ein Typ von A). Daher ist es oft nicht angebracht, Vererbungsbeziehungen zwischen semantisch nicht verwandten Klassen zu haben, nur weil sie dasselbe Verhalten haben.
In einem Konzept, das der Vererbung ähnelt, gibt es eine "Delegierung". Bei der Vererbung wird die einmal festgelegte Vererbungsbeziehung normalerweise nicht geändert, aber das Thema der Delegierung kann nach Bedarf geändert werden.
Aggregation und Zusammensetzung sind Konzepte, die sich in der Hierarchie von der Vererbung mit Is-a-Beziehung unterscheiden. Dies ist jedoch eine Einschlussbeziehung, bei der die Beziehung zwischen Klassen Has-a und zwischen Klassen ist. Beziehungen sind spärlicher als Vererbung.
Zusammenfassend ist es besser, die Vererbung zu verwenden, wenn die is-a-Beziehung gilt. Es ist jedoch besser, die Vererbung nicht unnötig zu verwenden.
Wenn Sie es mit einem Auto vergleichen Sportwagen ist ein Auto Spezialfahrzeug ist ein A-Auto usw.
Unten ist der Beispielcode.
Autoklasse ist die gleiche wie zuvor.
sample.py
class Car:
def __init__(self, name, color):
...
...
class SportCar(Car):
def __init__(self, name, color):
super().__init__(name, color)
class SpecialCar(Car):
def __init__(self, name, color):
super().__init__(name, color)
Die geerbte Klasse wird als übergeordnete Klasse und die geerbte Klasse als untergeordnete Klasse bezeichnet.
Im obigen Beispielcode ist die Car-Klasse die übergeordnete Klasse und das SportCar und das SpecialCar die untergeordneten Klassen.
Die untergeordnete Klasse super () .__ init__ (Name, Farbe)
ruft die übergeordnete Klasse __init__
auf.
[Polymorphismus-Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3 % 82% A3% E3% 82% BA% E3% 83% A0)
Polymorphismus beschreibt die Natur des Typsystems einer Programmiersprache und dass jedes Element der Programmiersprache (Konstanten, Variablen, Ausdrücke, Objekte, Funktionen, Methoden usw.) zu mehreren Typen gehört. Bezieht sich auf das Eigentum der Vergebung.
Wenn Sie sich Wikipedia ansehen, verstehen Sie wahrscheinlich nicht, was Sie sagen. Schauen Sie sich also den Beispielcode an.
Unten ist der Beispielcode.
sample.py
class Car:
def __init__(self, name, color):
...
def accelerator(self):
print(f"Ich trat aufs Gaspedal.({self.name})")
def brake(self):
print(f"Ich trat auf die Bremse.({self.name})")
class SportCar(Car):
...
class SpecialCar(Car):
...
cars = [Car("Prius", "Weiß"), SportCar("Ferrari", "rot"), SpecialCar("Krankenwagen", "Weiß")]
for car in cars:
car.accelerator()
car.brake()
Ausführungsergebnis.
Ich trat aufs Gaspedal.(Prius)
Ich trat auf die Bremse.(Prius)
Ich trat aufs Gaspedal.(Ferrari)
Ich trat auf die Bremse.(Ferrari)
Ich trat aufs Gaspedal.(Krankenwagen)
Ich trat auf die Bremse.(Krankenwagen)
Durch die Vorbereitung einer Methode mit demselben Namen ist es möglich, sie zu verwenden, ohne den Typ (die Klasse) zu kennen.
Das ist alles für die Erklärung.
Von nun an werden wir den Quellcode in ein Programm ändern, das objektorientiert zu programmieren scheint.
Klicken Sie hier für den ursprünglichen Quellcode
sample.py
class Car:
def __init__(self, name, color):
self.name = name #Autoname
self.color = color #Autofarbe
def start_engine(self):
print("Ich ließ den Motor an.")
def stop_engine(self):
print("Ich stellte den Motor ab.")
def accelerator(self):
print("Ich trat aufs Gaspedal.")
def brake(self):
print("Ich trat auf die Bremse.")
class SportCar(Car):
def __init__(self, name, color):
super().__init__(name, color)
class SpecialCar(Car):
def __init__(self, name, color):
super().__init__(name, color)
cars = [Car("Prius", "Weiß"), SportCar("Ferrari", "rot"), SpecialCar("Krankenwagen", "Weiß")]
for car in cars:
car.accelerator()
car.brake()
Ich werde es ein wenig reparieren.
Das Auto hat nicht die Funktionen Motor starten und Motor stoppen.
Es gibt nur einen Motorknopf.
Damit ...
Kombiniere start_engin (self)
und stop_engine (self)
zu einem.
Stellen Sie außerdem sicher, dass der Motor läuft und der Motor läuft.
sample.py
class Car:
def __init__(self, name, color):
self.name = name #Autoname
self.color = color #Autofarbe
self._engine = False #Richtig, wenn der Motor läuft,Falsch, wenn nicht eingeschaltet
def engine(self):
print(f"[{self.name}]", end=" ")
self._engine = not(self._engine)
if self._engine:
print("Ich ließ den Motor an.")
else:
print("Ich stellte den Motor ab.")
def accelerator(self):
print(f"[{self.name}]", end=" ")
print("Ich trat aufs Gaspedal.")
def brake(self):
print(f"[{self.name}]", end=" ")
print("Ich trat auf die Bremse.")
class SportCar(Car):
def __init__(self, name, color):
super().__init__(name, color)
class SpecialCar(Car):
def __init__(self, name, color):
super().__init__(name, color)
cars = [Car("Prius", "Weiß"), SportCar("Ferrari", "rot"), SpecialCar("Krankenwagen", "Weiß")]
for car in cars:
car.engine()
car.accelerator()
car.brake()
car.engine()
Ausführungsergebnis.
[Prius]Ich ließ den Motor an.
[Prius]Ich trat aufs Gaspedal.
[Prius]Ich trat auf die Bremse.
[Prius]Ich stellte den Motor ab.
[Ferrari]Ich ließ den Motor an.
[Ferrari]Ich trat aufs Gaspedal.
[Ferrari]Ich trat auf die Bremse.
[Ferrari]Ich stellte den Motor ab.
[Krankenwagen]Ich ließ den Motor an.
[Krankenwagen]Ich trat aufs Gaspedal.
[Krankenwagen]Ich trat auf die Bremse.
[Krankenwagen]Ich stellte den Motor ab.
Ist es so
Ich konnte mir kein gutes Beispiel vorstellen, daher war es möglicherweise schwer zu verstehen. Ich denke, dass objektorientierte Programmierung nützlich sein wird, wenn die Anzahl der Personen zunimmt.
Diesmal endet es.
Bis zum Ende Danke fürs Lesen. Wenn Sie Fehler oder Ratschläge haben, würde ich mich freuen, wenn Sie einen Kommentar abgeben könnten.
Recommended Posts