OOP Objektorientierte Programmierung

Aufbau und Planung von Softwareprojekten, UML, Zustandsautomaten, Softwaremodule, OOP
Ответить
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

OOP Objektorientierte Programmierung

Сообщение Igor_G »

Ich frage mich wo liegen die Unterschiede zwischen Begriffen OOP, LVOOP und GOOP?

Bis jetzt habe ich nur einen einzigen Unterschied zwischen LVOOP und GOOP gefunden.

Und zwar - GOOP macht die Objektverwaltung "by reference" LVOOP "by value". Mit klaren Worten: bei LVOOP "by value" muss man Drähte verwenden um eine Verbindung zu erstellen (es ist typisch LabVIEW. Und ich finde es nicht schlecht). Wenn man GOOP verwendet, kann man Klassen über eine Referenz abrufen (hier sehe ich theoretisch schon ein Nachteil und zwar: GOOP wird viel langsamer als LVOOP. Weil eine Referenz viel langsamer als eine direkte Verbindung ist).

Ist das der einzige Unterschied oder gibt es doch mehr? Mich interessiert noch einiges:
• was kostet GOOP?
• ob man GOOP und LVOOP in einem Projekt zusammen verwenden kann?

Aber wo eigentlich unterscheiden sich OOP und LVOOP ist mir noch nicht klar.
Последний раз редактировалось Igor_G 01 дек 2011, 17:08, всего редактировалось 1 раз.
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: OOP Objektorientierte Programmierung

Сообщение Igor_G »

Hier habe ich versucht verschiedene interessante LVOOP Quellen zusammen binden.

Implementierung LVOOP Klasse: (by EG)
http://www.labviewportal.org/de/projekt ... oop-klasse
Ein LVOOP Projekt (by EG)
http://www.labviewportal.org/viewtopic.php?f=153&t=900

Implementierung LVOOP Klasse: (by MH)
http://matthias-hielscher.de/labview/50 ... bVIEW.html
LVOOP - Anleitung (by NI)
http://zone.ni.com/reference/de-XX/help ... /TOC63.htm
LVOOP: The Decisions Behind the Design (by NI)
http://zone.ni.com/devzone/cda/tut/p/id/3574
LVOOP: FAQ (by NI)
http://zone.ni.com/devzone/cda/tut/p/id/3573
OOP: (by Wikipedia)
http://de.wikipedia.org/wiki/Objektorie ... rammierung

Video:
Deutsch (by NI):
Eine Einführung: „Was ist OOP? Wo ein Unterschied zwischen OOP und Traditionell Pragramierung liegt? Wie kann man es realisieren?“
https://ni.adobeconnect.com/_a56821929/p79152328/
Englisch (by NI):
Noch ein Video: „Was ist eine Klasse? Wie kann man erste Klasse implementieren?“
http://www.ni.com/swf/demos/us/labview/lv_oop/
Последний раз редактировалось Igor_G 04 дек 2011, 17:48, всего редактировалось 1 раз.
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: OOP Objektorientierte Programmierung

Сообщение Igor_G »

Objekt-Orientiertes Programmieren mit LabVIEW (LVOOP) – eine Kurzfassung:

• LVOOP ermöglicht die Erzeugung von modularem, wartungsfreundlichem, ausbaufähigem Code
• Objektorientierte Applikationen bestehen aus Klassen
• Klassen entsprechen einem neuen LabVIEW-Datentyp (Cluster aus Klassenprivatdaten)
• Der neue Datentyp wird durch eine entsprechende Klassenkontrolle (.ctl) definiert.
• Der Inhalt der Klassenkontrolle ist privat und nur innerhalb der Klasse zugänglich. (Die Kinder- Klassen dürfen, frei durch die Funktionen, auf die Eltern Attribute zugreifen)
• Die Klassenkontrolle (.ctl) enthält einen Cluster in dem alle benötigten Kontrollen (Controls) abgelegt werden.
• Klassen werden durch Attribute (Eigenschaften) und Methoden (Funktionen) definiert
• Attribute (Eigenschaften) sind statisch. Sie entsprechen Datenfeldern einer Klasse
• Methoden sind dynamisch. Sie entsprechen Aktionen (Verhaltensweisen) innerhalb einer Klasse
• Vererbung ermöglicht die Wiederverwendung von Code. Hierzu wird durch Vererbung eine neue Klasse erstellt. Man spricht von einer Parent – Child (Eltern-Kind) Beziehung. Die neue Klasse (Child - Klasse) besitzt die Grundeigenschaften und Methoden der Parent (Eltern) – Klasse und wird mit den zusätzlich erforderlichen Eigenschaften und Methoden ausgerüstet
• Klassen definieren die Eigenschaften und Methoden der daraus abgeleiteten Objekte.
• Eine Klasse ähnelt einem intelligenten Cluster.
• Ein Objekt ist ein bestimmtes Exemplar einer Klasse.
• Die Daten (Eigenschaften) einer Klasse werden durch ein Kontrollelement .ctl dargestellt. Alle Eigenschaften (.ctl) sind defaultmäßig private.
• Methoden entsprechen dynamischen Funktionen der Objekte. Sie werden folgendermaßen erhalten: Im Projektexplorer auf eine Klasse rechtsklicken und "VI from Dynamic Dispatch Template" auswählen und dort Methoden definieren.
• Zu den Methoden gehört auch die Zugriff Definition - private, public, protected

Die drei wichtigsten Säulen (Prinzipien) von LVOOP sind:

• Verkapselung (Encapsulation).
Eine Klasse kann die oben genannten Eigenschaften in Form einer .ctl kapseln. Defaultmäßig ist diese .ctl private. Eigenschaften können den gleichen Namen haben, falls sie in verschiedenen Klassen verwendet werden.
UND
Eine Klasse kann auch Methoden kapseln. Die Vorteile von OOP sind folgende: Es ist sofort ersichtlich welche Eigenschaften und Methoden unter einem bestimmten Objekt eingesetzt werden können. Der Zugriff auf Methoden kann definiert als public, private oder protected definiert werden. Methoden können den gleichen Name haben falls sie in verschiedenen Klassen verwendet werden.

• Vererbung (Inheritance)
Eine Kind-Klasse kann von ihrer Eltern-Klasse die Attribute erben.
UND
Eine Kind-Klasse kann von ihrer Eltern-Klasse die Funktionalität erben.
Vorteil von OOP: die Funktionalität, die in verschieden Klassen verwendet wird, muss nicht mehrfach deklariert werden, weil alle Eigenschaften und Methoden der Eltern-Klasse automatisch auf die Kind-Klasse vererbt werden. Eine Kind-Klasse kann auf die Funktionen ihrer Eltern-Klasse zugreifen, auch wenn diese als protected definiert ist. Dies gilt nicht für Objekte aus anderen Klassen.
Instanzen von Klassen mit der gleichen Eltern-Klasse können in einem Array zusammengefasst werden.

• Dynamische Bindung (Polymorphismus)
Methoden können polymorph sein. Dass heißt ein Kind-Klasse kann die Funktionen der Eltern-Klasse ersetzen (überschreiben), wenn das notwendig ist.
Anwender können innerhalb der Klassenhierarchie Methoden von verschiedenen VIs mit demselben Namen belegen. Dies wird als dynamische Bindung bezeichnet, da bis zur Ausführung nicht klar ist, welches der VIs von LabVIEW aufgerufen wird.

Gerne greife ich Verbesserungsvorschläge auf.
Последний раз редактировалось Igor_G 09 дек 2011, 14:47, всего редактировалось 1 раз.
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: OOP Objektorientierte Programmierung

Сообщение Igor_G »

Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: OOP Objektorientierte Programmierung

Сообщение Igor_G »

LVOOP Entwurfsmuster v.1.3 (Deu)
Вложения
LabVOOP_Design_Patterns_DEU.pdf
(146.92 КБ) 723 скачивания
Последний раз редактировалось Igor_G 09 дек 2011, 14:54, всего редактировалось 2 раза.
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: OOP Objektorientierte Programmierung

Сообщение Igor_G »

• was kostet GOOP?
- GOOP ist kostenlos.
Man findet GOOP hier: http://zone.ni.com/devzone/cda/tut/p/id/3391
und/oder hier: http://www.sciware.com.au/goopdeveloper/index.html
• ob man GOOP und LVOOP in einem Projekt zusammen verwenden kann?
- Ja es ist möglich, aber mit höherer Wahrscheinlichkeit sinnlos. (LVOOP ist besser. Warum? Die Antwort findet man in den oberen links)
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: OOP Objektorientierte Programmierung

Сообщение Igor_G »

Hallo zusammen,
mir ist nicht ganz klar, wie man auf die Daten von einer Geschwister-Klasse auf die andere Geschwister-Klasse zugreifen kann.
Wie funktioniert das? Kann mir jemand einen Tipp geben?
Gruß, Igor
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: OOP Objektorientierte Programmierung

Сообщение Igor_G »

Programmieren - Vererbung & Polyphormie (by Informatik- h_da)
Вложения
08-PG2-Vererbung-Polymorphie-Student.pdf
Programmieren - Vererbung & Polyphormie
(196.4 КБ) 522 скачивания
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: OOP Objektorientierte Programmierung

Сообщение Igor_G »

Igor_G писал(а):Hallo zusammen,
mir ist nicht ganz klar, wie man auf die Daten von einer Geschwister-Klasse auf die andere Geschwister-Klasse zugreifen kann.
Wie funktioniert das? Kann mir jemand einen Tipp geben?
Gruß, Igor
Ich habe die Lösung gefunden. Man braucht nur richtig Eltern Zugriffsfunktionen verwenden und ein zusätzliche Cluster Class als ctl Element erstellen.
Вложения
12.12_1.jpg
12.12_2.jpg
Igor_G
assistant
assistant
Сообщения: 126
Зарегистрирован: 06 ноя 2011, 14:10
Версия LabVIEW: 2012-2016
Контактная информация:

Re: OOP Objektorientierte Programmierung

Сообщение Igor_G »

Versteht jemand den Sinn und Zweck die drei Vererbungseinstellungen?
Вложения
13.12_1.jpg
Ответить

Вернуться в «Programmiermuster»