OOP Objektorientierte Programmierung

Aufbau und Planung von Softwareprojekten, UML, Zustandsautomaten, Softwaremodule, OOP

OOP Objektorientierte Programmierung

Postby Igor_G on 01 Dec 2011, 14:50

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.
Last edited by Igor_G on 01 Dec 2011, 17:08, edited 1 time in total.
Igor_G
assistant
assistant
 
Posts: 122
Joined: 06 Nov 2011, 14:10
LabVIEW Version: 2012-2015
Karma: 0

Re: OOP Objektorientierte Programmierung

Postby Igor_G on 01 Dec 2011, 15:56

Hier habe ich versucht verschiedene interessante LVOOP Quellen zusammen binden.

Implementierung LVOOP Klasse: (by EG)
de/projektierung/lvoop-klasse
Ein LVOOP Projekt (by EG)
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/
Last edited by Igor_G on 04 Dec 2011, 17:48, edited 1 time in total.
Igor_G
assistant
assistant
 
Posts: 122
Joined: 06 Nov 2011, 14:10
LabVIEW Version: 2012-2015
Karma: 0

Re: OOP Objektorientierte Programmierung

Postby Igor_G on 02 Dec 2011, 11:51

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.
Last edited by Igor_G on 09 Dec 2011, 14:47, edited 1 time in total.
Igor_G
assistant
assistant
 
Posts: 122
Joined: 06 Nov 2011, 14:10
LabVIEW Version: 2012-2015
Karma: 0

Re: OOP Objektorientierte Programmierung

Postby Igor_G on 04 Dec 2011, 17:21

Igor_G
assistant
assistant
 
Posts: 122
Joined: 06 Nov 2011, 14:10
LabVIEW Version: 2012-2015
Karma: 0

Re: OOP Objektorientierte Programmierung

Postby Igor_G on 05 Dec 2011, 11:42

LVOOP Entwurfsmuster v.1.3 (Deu)
Attachments
LabVOOP_Design_Patterns_DEU.pdf
(146.92 KiB) Downloaded 426 times
Last edited by Igor_G on 09 Dec 2011, 14:54, edited 2 times in total.
Igor_G
assistant
assistant
 
Posts: 122
Joined: 06 Nov 2011, 14:10
LabVIEW Version: 2012-2015
Karma: 0

Re: OOP Objektorientierte Programmierung

Postby Igor_G on 09 Dec 2011, 14:16

• 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
 
Posts: 122
Joined: 06 Nov 2011, 14:10
LabVIEW Version: 2012-2015
Karma: 0

Re: OOP Objektorientierte Programmierung

Postby Igor_G on 09 Dec 2011, 14:27

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
 
Posts: 122
Joined: 06 Nov 2011, 14:10
LabVIEW Version: 2012-2015
Karma: 0

Re: OOP Objektorientierte Programmierung

Postby Igor_G on 09 Dec 2011, 14:51

Programmieren - Vererbung & Polyphormie (by Informatik- h_da)
Attachments
08-PG2-Vererbung-Polymorphie-Student.pdf
Programmieren - Vererbung & Polyphormie
(196.4 KiB) Downloaded 328 times
Igor_G
assistant
assistant
 
Posts: 122
Joined: 06 Nov 2011, 14:10
LabVIEW Version: 2012-2015
Karma: 0

Re: OOP Objektorientierte Programmierung

Postby Igor_G on 12 Dec 2011, 15:46

Igor_G wrote: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.
Attachments
12.12_1.jpg
12.12_2.jpg
Igor_G
assistant
assistant
 
Posts: 122
Joined: 06 Nov 2011, 14:10
LabVIEW Version: 2012-2015
Karma: 0

Re: OOP Objektorientierte Programmierung

Postby Igor_G on 13 Dec 2011, 17:38

Versteht jemand den Sinn und Zweck die drei Vererbungseinstellungen?
Attachments
13.12_1.jpg
Igor_G
assistant
assistant
 
Posts: 122
Joined: 06 Nov 2011, 14:10
LabVIEW Version: 2012-2015
Karma: 0


Return to Programmiermuster

Who is online

Users browsing this forum: No registered users and 2 guests

cron