[How-To]Instanzierung von Forms

11/06/2013 18:19 DeinMud#1
Da ich in diesem Forum genug von sowas hab:
Code:
Form2.show()
(Dies geht, da VB.net eine implizite Instanz des Dialogs erstellt & Sie anzeigt (stammt aus VB6 Zeiten))
Zeig ich euch einfach mal, wie und vorallendingen wieso man eine Klasse instanzieren sollte;

Warum sollte man eine Klasse instanzieren?

Zu allererst, was ist eine Klasse?

Eine Klasse ist der Bauplan eines Objekts, welcher bei der instanzierung mittels dem Schlüsselwort new gegründet wird (also das Objekt). Wenn wir nun ohne Instanzierung auf die Klasse zugreifen, führt dies dazu, dass am Bauplan Sachen verändert werden --> Auswirkungen auf weitere Instanzierungen.

Probleme bei nicht Instanzierung:
-Um Events formübergreifend zu abonnieren wird eine Instanz dieser benötigt.
-Es können keine zwei Formen angezeigt werden, da bloß ein "Objekt" bzw der Bauplan vorhanden ist.
-Da an dem Bauplan Sachen geändert werden, wird bei einer weiteren Instanzierung, das Objekt gemäß dem Bauplan gebaut --> Änderung an zukünftig instanzierten Objekten.

Wie instanziere ich eine Form nun richtig?

Eine Form instanziert ihr mittels dem Schlüsselwort new;
Code:
Dim frm as new form2
Nun gibt es zwei Möglichkeiten diese anzeigen zu lassen:
Code:
frm.show()
und
Code:
frm.showDialog()
Was ist nun der Unterschied zwischen beiden?
Die erste Methode, zeigt einfach die Form an - Die sonstige Code Durchführung wird weder angehalten, noch sonst beeinträchtigt.
Anders bei der zweiten Methode, diese hält die Code Durchführung an, solange der Dialog offen ist. Ausserdem kann der Dialog eine "Antwort" geben.
Hier mal ein kleines Beispiel:

Code:
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Using frm As New Form2
            If frm.ShowDialog() = Windows.Forms.DialogResult.OK Then
                MessageBox.Show("Ok wurde betätigt")
            End If
        End Using
    End Sub
End Class
Code:
Public Class Form2
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.DialogResult = Windows.Forms.DialogResult.OK
    End Sub
End Class
Mit dem Klick auf Button1 schliesst sich die Form & die Messagebox erscheint.
Dies dient also, als eine Art Dialog mit Rückgabemöglichkeit.
Ich habe hier ausserdem eine using-kapselung genutzt, da die Klasse IDisposable implementiert & somit automatisch .dispose() aufgerufen wird.
11/06/2013 19:39 Brendan Jordan#2
Quote:
Originally Posted by DeinMud View Post
Da ich in diesem Forum genug von sowas hab:
Code:
Form2.show()
Quote:
Originally Posted by DeinMud View Post
Code:
frm.show()
Oha viel besser
11/06/2013 22:44 DeinMud#3
???
Ich hab bis jetzt in diesem Forum noch keinmal in einem Code Ausschnitt gesehen, dass eine Form richtig instanziert wurde.
Ist ja schon traurig sowas ^
11/06/2013 23:14 tolio#4
Quote:
-Da an dem Bauplan Sachen geändert werden, wird bei einer weiteren Instanzierung, das Objekt gemäß dem Bauplan gebaut --> Änderung an zukünftig instanzierten Objekten.
in einem normalen .net programm sind die im designer angelegten formen bereits instanziert. man greift also keines wegs direkt auf das objekt zu sondern einfach nur auf die default instanz.

den grund das es diese default instanzen gibt ist schlicht und ergreifend das es am Anfang einfacher ist. Strikt oop ist es natürlich nicht, aber das ist .net so oder so nicht.

wenn man also keinen triftigen grund hat die formen per hand zu instanzieren ist es nicht notwendig.
11/07/2013 07:34 DeinMud#5
Quote:
Originally Posted by tolio View Post
in einem normalen .net programm sind die im designer angelegten formen bereits instanziert. man greift also keines wegs direkt auf das objekt zu sondern einfach nur auf die default instanz.

den grund das es diese default instanzen gibt ist schlicht und ergreifend das es am Anfang einfacher ist. Strikt oop ist es natürlich nicht, aber das ist .net so oder so nicht.

wenn man also keinen triftigen grund hat die formen per hand zu instanzieren ist es nicht notwendig.
Hast es erfasst, das ist nicht strikt oop also finger weg davon

@Y U K I

Das hat nichts mit Besserwisserei zu tun, in diesem Forum sind bloß viele Leute die
veralteten crap gelehrt bekommen, von Leuten wie dir und tolio. Also bitte erst lernen dann posten.
11/07/2013 10:12 tolio#6
ok darf ich dann auch keine variablen mehr benutzen weil sie auch nicht strikt oop sind?
11/07/2013 12:14 Schlüsselbein#7
OOP ist nicht das Maß aller Paradigmen. Nur mal so eingeworfen.
11/07/2013 14:12 dready#8
Quote:
Originally Posted by DeinMud View Post
Hast es erfasst, das ist nicht strikt oop also finger weg davon

@Y U K I

Das hat nichts mit Besserwisserei zu tun, in diesem Forum sind bloß viele Leute die
veralteten crap gelehrt bekommen, von Leuten wie dir und tolio. Also bitte erst lernen dann posten.
1. Ich finds ziemlich daneben das du hier jemanden angreifst, der dir jede noch so doofe Frage beantwortet hat und das teilweise noch mehrmals.

2. Das ganze hat wenige mit VB6 Abwärstkompatibilität zu tun.

3. Ein Programmierparadigma soll dich unterstützen, eins der wichtigsten Dinge ist dabei zu wissen wann eine Verletzung in Ordnung ist, es geht schliesslich nicht darum das Paradigma sklavisch zu verfolgen, wenn es dich gleichzeitig behindert.

4. Wenn striktes OOP derart wichtig für dich ist versteh ich beim besten Wille nicht warum du nicht eine Sprache nutzt die von Anfang an darauf ausgelegt ist. Es hat seine Gründe warum die meisten sehr verbreiteten Sprachen die Fähigkeit haben OOP Grundsätze zu verletzen.
11/07/2013 17:13 DeinMud#9
Wer nicht oop programmiert sollte nichts mit programmieren am hut haben Punkt Wer anders meintm soll onkel google oder sich bei seinem prof beraten.
Und wenn du dich davon angegriffen fühlst dready, dann weisst du ja was schief läuft ; )
Weiterer off topic(flamewar), der nichts mit dem tutorial zu tun hat, wird nun Reported.
und vb.net benutze ich, da wir dies an der uni nutzen (Informatikstudium)
11/07/2013 17:32 tolio#10
Quote:
Originally Posted by DeinMud View Post
Wer nicht oop programmiert sollte nichts mit programmieren am hut haben Punkt
ok lassen wir das einfach so als meinung stehen, wer mit einer "ich hab immer recht"-position in einer diskursion ankommt dem kann man eh nicht mehr helfen

Quote:
Originally Posted by DeinMud View Post
Wer anders meintm soll onkel google oder sich bei seinem prof beraten.
ich bin mir da nicht so ganz sicher was du da mit google meinst, aber offensichtlich hat dir ein professor diese ideen in den kopf gesetzt, wunderbar das es inkompetenz an hohen stellen gibt. nunja ist nicht das erste mal braucht man sich also auch nicht drüber aufregen.

Quote:
Originally Posted by DeinMud View Post
Und wenn du dich davon angegriffen fühlst dready, dann weisst du ja was schief läuft ; )
so wie ich das sehe bezog sich diese aussage auf das was er gequotet hat...

Quote:
Originally Posted by DeinMud View Post
Weiterer off topic(flamewar), der nichts mit dem tutorial zu tun hat, wird nun Reported.
Das ist hier ist eine diskursion, "wer nicht meiner meinung ist fliegt raus" zieht da einfach nicht und ein famewar ist das ganze schonmal gar nicht weil hier argumentiert wird und nicht geflammt

Quote:
Originally Posted by DeinMud View Post
und vb.net benutze ich, da wir dies an der uni nutzen (Informatikstudium)
cool story bro; würd mich mal so ganz offtopic interessieren an welcher uni das so ist


Da du ja erfolgreich meinen ersten ansatz auf diesen punkt hinzuweisen ignoriert hast (und einige hinweise anderer leute), hätte ich gerne trotzdem noch das du mir die frage beantwortest ob man jetzt keine valuetypen mehr in .net nutzen darf, schließlich sind diese auch nicht oop konform.
11/07/2013 18:16 Schlüsselbein#11
Quote:
Wer nicht oop programmiert sollte nichts mit programmieren am hut haben Punkt
Weil? Oder lernt man auf der Rütli-Schule kein Argumentieren?
11/07/2013 19:08 DeinMud#12
Quote:
Originally Posted by tolio View Post
ok lassen wir das einfach so als meinung stehen, wer mit einer "ich hab immer recht"-position in einer diskursion ankommt dem kann man eh nicht mehr helfen


ich bin mir da nicht so ganz sicher was du da mit google meinst, aber offensichtlich hat dir ein professor diese ideen in den kopf gesetzt, wunderbar das es inkompetenz an hohen stellen gibt. nunja ist nicht das erste mal braucht man sich also auch nicht drüber aufregen.


so wie ich das sehe bezog sich diese aussage auf das was er gequotet hat...


Das ist hier ist eine diskursion, "wer nicht meiner meinung ist fliegt raus" zieht da einfach nicht und ein famewar ist das ganze schonmal gar nicht weil hier argumentiert wird und nicht geflammt


cool story bro; würd mich mal so ganz offtopic interessieren an welcher uni das so ist


Da du ja erfolgreich meinen ersten ansatz auf diesen punkt hinzuweisen ignoriert hast (und einige hinweise anderer leute), hätte ich gerne trotzdem noch das du mir die frage beantwortest ob man jetzt keine valuetypen mehr in .net nutzen darf, schließlich sind diese auch nicht oop konform.
1. Dieser Thread ist keine Diskussion sondern ein Tutorial, wer meint er weiß es besser soll seinen Weg gehen, wer jedoch bereit ist es gleich richtig zu lernen kann sich das Tutorial einfach ansehen.
2. Reported für off topic weil siehe 1.
Da ich keine Lust drauf habe euch jede noch so triviale Frage zu beantworten verweise ich auf Google und auf microsoft's entwicklerbuch (dahingegen ist das opengalileo book schrott)
11/07/2013 19:23 dready#13
Quote:
Originally Posted by DeinMud View Post
Wer nicht oop programmiert sollte nichts mit programmieren am hut haben Punkt Wer anders meintm soll onkel google oder sich bei seinem prof beraten.
Und wenn du dich davon angegriffen fühlst dready, dann weisst du ja was schief läuft ; )
Weiterer off topic(flamewar), der nichts mit dem tutorial zu tun hat, wird nun Reported.
und vb.net benutze ich, da wir dies an der uni nutzen (Informatikstudium)
Ich fühlte mich nicht angegriffen, aber ich fand es nicht sonderlich fair von dir so agressiv auf Tolio's Einwand zu reagieren, erstrecht nicht nachdem er wie ich das im Kopf habe ne Menge Zeit aufgebracht hat um dir zu helfen.

Sowohl meins als auch Tolio's Post drehten sich ganz klar um dein Tutorial, seh da beim besten Willen kein geflame oder Offtopic und es entbehrt nicht einer gewissen Ironie das du einen Satz vorher einen Seitenhieb auf mich verteilst.
Einen weiteren Satz davor erklärst du das jeder .NET, Java oder Cpp usw. usw. (ich überlass es dir weiter nachzuschlagen, denk du weißt worauf ich hinauswill), Programmierer eigentlich am besten mitm Programmieren aufhören sollte ohne auchnur einen Ansatz der Erklärung zu dem Warum abzugeben.

Genau das ist es auch was hier gerade etwas polarisiert. Aber du kannst nicht erwarten soetwas zu posten und dann zu sagen, niemand darf mehr was zu sagen.

Es geht hier darum das du auf recht angriffslustige Art und Weise etwas als absolut indisktuabel darstellst. Worauf Tolio rauswollte ist das es praktisch niemanden gibt der tatsächlich und 100% OOP Paradigmen befolgt, einfach weil es Ding gibt die deutlich bequemer sind, ohne dabei die Vorteile des ganzen total zu killen.

In dem Moment wo das hier das größte Problem mit dem Code der Leute ist können wir alle heilfroh sein.
11/07/2013 19:39 DeinMud#14
All deine genannten Progammiersprachen sind oop.
Ich habe gesagt, wer nicht oop proggt wenne die möglichkeit hat macht etwas falsch.
Es ist schwer jemandem etwas aus dem Kopf rauszuschlagen was er mal gelernt hat,
dann muss man einfach direkt sprechen, gilt nicht nur fürs proggen sondern fürs leben allgemein.
und Doch oop ist einfach pflicht geworden, solange man nicht grade mit Vb6 proggt.
Wer weitere Fragen hat, hier findet ihr kompetente Hilfe;
[Only registered and activated users can see links. Click Here To Register...]
Aber achtung: Wennde dort soetwas wie Form2.show () bringt wirse ordentlich verdrescht gleiches gilt bei fehlender eigeninitiative & option strict off.
Ahja das oop muss ich gilt natürlich nicht unbedingt für kleine 50 zeilen Projekte, doch je grösser das Projekt desto mehr wirds pflicht.
11/07/2013 20:18 Schlüsselbein#15
Nö, cpp ist nicht ausschließlich _objektorientiert_ (eine Sprache kann nicht OOP sein).

Aber schön, dass du meine Posts und Hibterfragungen einfach überliest. So macht man sich Diskussion natürlich auch einfach: nur sehen, was man sehen will.