{"id":55000015,"date":"2015-04-01T00:00:00","date_gmt":"2020-03-27T19:16:27","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=15"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Objektorientierte_Programmierung_Grundlagen_II","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/","title":{"rendered":"Objektorientierte Programmierung: Grundlagen II"},"content":{"rendered":"<p><b>Im ersten Teil dieser Artikelreihe haben wir uns die Grundlagen zur objektorientierten Programmierung mit C# angesehen &#8211; zum Beispiel die Klasse Program, das Erstellen neuer Klassen, die Verwendung von Eigenschaften und von Methoden. Dies greifen wir im zweiten Teil auf und gehen auf verschiedene Arten der Eigenschaftsdefinition, Kontruktoren, aufgeteilte Klassen, Objektreferenzen, &Uuml;berladung von Methoden und verschiedene Parameter-Techniken ein.<\/b><\/p>\n<h2>&Ouml;ffentliche Variablen oder &#8220;Felder&#8221;<\/h2>\n<p>Wenn eine Eigenschaft einer Klasse nur gelesen und geschrieben werden soll, ohne dass beim Lesen oder Schreiben weitere Aktionen erfolgen sollen, k&ouml;nnen Sie diese theoretisch einfach als &ouml;ffentliche Variable deklarieren:<\/p>\n<pre>class Person_VornameOeffentlich\r\n{\r\n     public string Vorname;\r\n}<\/pre>\n<p>Sie greifen dann lesend und schreibend auf die Variable zu:<\/p>\n<pre>public void OeffentlicheVariableTesten()\r\n{\r\n     Person_VornameOeffentlich person = \r\n         new Person_VornameOeffentlich();\r\n     person.Vorname = \"Andr&eacute;\";\r\n     Console.WriteLine(\"Vorname: {0}\", person.Vorname);\r\n}<\/pre>\n<p>Eine solche Variable\/Eigenschaft nennt man auch Feld.<\/p>\n<h2>Eigenschaft kapseln<\/h2>\n<p>Meist ist aber kein derart unkontrollierter Zugriff auf eine solche Variable erw&uuml;nscht. Dann deklariert man die Variable als private Variable und erstellt eine &ouml;ffentliche Eigenschaft, die einen <b>get<\/b>&#8211; und einen <b>set<\/b>-Block enth&auml;lt. In der Kurzform sieht dies so aus:<\/p>\n<pre>private string vorname;<\/pre>\n<p>Dies ist die &ouml;ffentliche Variable mit dem <b>get<\/b>&#8211; und dem <b>set<\/b>-Block &#8211; <b>get <\/b>liefert den aktuellen Wert der privaten Variablen <b>vorname <\/b>aus und <b>set <\/b>stellt diesen beim Zuweisen eines Wertes f&uuml;r die Eigenschaft auf den Inhalt der Variablen <b>value <\/b>ein:<\/p>\n<pre>public string Vorname\r\n{\r\n     get { return vorname; }\r\n     set { vorname = value; }\r\n}<\/pre>\n<p>Damit halten Sie sich die M&ouml;glichkeit offen, den Wert der Eigenschaft auch innerhalb der Klasse f&uuml;r andere Zwecke einzusetzen &#8211; etwa f&uuml;r Berechnungen weiterer Eigenschaftswerte oder zum Zusammensetzen von Ausdr&uuml;cken. Gegebenenfalls ben&ouml;tigen Sie dies gar nicht und wollen nur von au&szlig;en den Wert der Eigenschaft eintragen und diesen sp&auml;ter wieder auslesen.<\/p>\n<p>Ein weiterer Vorteil der Kapselung ist: Sie k&ouml;nnen damit auch festlegen, dass eine Eigenschaft nur schreibend oder nur lesend genutzt werden kann. Wenn die Eigenschaft Vorname beispielsweise nur lesend genutzt werden soll, lassen Sie einfach den <b>set<\/b>-Teil weg:<\/p>\n<pre>public string Vorname\r\n{\r\n     get { return vorname; }\r\n}<\/pre>\n<p>F&uuml;r einen ausschlie&szlig;lich schreibenden Zugriff bleibt hingegen der <b>get<\/b>-Teil au&szlig;en vor:<\/p>\n<pre>public string Vorname\r\n{\r\n     set { vorname = value; }\r\n}<\/pre>\n<h2>Getter und Setter schnell erstellen<\/h2>\n<p>Ben&ouml;tigen Sie <b>get<\/b>&#8211; und <b>set<\/b>-Block, wollen aber keine Einschr&auml;nkungen vornehmen wie etwa eine Pr&uuml;fung der Eingabe und ben&ouml;tigen auch keine Variable, auf die Sie von der Klasse aus zugreifen wollen, k&ouml;nnen Sie diese verk&uuml;rzte Variante nutzen:<\/p>\n<pre>class Person_AutomatischImplementiert\r\n{\r\n     public string Vorname { get; set; }\r\n     public string Nachname { get; set; }\r\n}<\/pre>\n<p>Der Zugriff auf die beiden Eigenschaften der Klasse erfolgt dann genau wie bei der vorherigen Version.<\/p>\n<h2>Unterst&uuml;tzung durch Visual Studio<\/h2>\n<p>Beim schnellern Erstellen von Eigenschaften unterst&uuml;tzt Visual Studio Sie mit Shortcuts. Dazu geben Sie in einer leeren Zeile in der gew&uuml;nschten Klasse zun&auml;chst die vier Buchstaben <b>prop <\/b>ein. Nun erscheinen bereits weiterf&uuml;hrende M&ouml;glichkeiten in der IntelliSense-Liste (siehe Bild 1). F&uuml;r uns sind aktuell zwei Varianten interessant. Die erste erfordert die Eingabe von <b>prop + Tab + Tab <\/b>und liefert die folgende Vorlage:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_02\/pic_15_002.png\" alt=\"Schnelles Erstellen einer Property\" width=\"650\" height=\"254,8\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Schnelles Erstellen einer Property<\/span><\/b><\/p>\n<pre>public int MyProperty { get; set; }<\/pre>\n<p>Dabei werden int und <b>MyProperty <\/b>gelb hinterlegt und k&ouml;nnen mit der Tabulator-Taste durchlaufen werden. Auf diese Weise k&ouml;nnen Sie die Platzhalter leicht durch den Datentyp und den Namen der Eigenschaft ersetzen.<\/p>\n<p>Die zweite Variante ist die Eingabe von <b>propfull + Tab + Tab <\/b>(es reicht auch <b>propf + Tab + Tab <\/b>aus). Dies liefert die folgende Vorlage:<\/p>\n<pre>private int myVar;\r\npublic int MyProperty\r\n{\r\n     get { return myVar; }\r\n     set { myVar = value; }\r\n}<\/pre>\n<p>Hier k&ouml;nnen Sie den Datentyp (<b>int<\/b>), den Variablennamen (<b>myVar<\/b>) und den Eigenschaftsnamen (<b>MyProperty<\/b>) per Tabulatortaste erreichen und &auml;ndern.<\/p>\n<h2>Klassen mit Konstruktor<\/h2>\n<p>Unter VBA gibt es keine M&ouml;glichkeit, gleich beim Erstellen einer Klasse einen oder mehrere Werte zu &uuml;bergeben. Dazu muss man nach dem Erstellen daf&uuml;r vorgesehene Eigenschaften nutzen. Das ist schon ein Nachteil, wenn f&uuml;r das Verwenden der Klasse bestimmte Pflichtinformationen &uuml;bergeben werden m&uuml;ssen, bevor man etwa bestimmte Methoden dieser Klasse nutzt.<\/p>\n<p>Das hei&szlig;t, dass man vor dem Ausf&uuml;hren der Methode immer noch pr&uuml;fen muss, ob die Pflichtinformationen &uuml;berhaupt &uuml;bergeben wurden. Davon abgesehen ist es nat&uuml;rlich auch viel einfacher, die wichtigsten Eigenschaften gleich beim Initialisieren des Objekts zu &uuml;bergeben statt m&uuml;hsam Eigenschaft f&uuml;r Eigenschaft zu &uuml;bergeben.<\/p>\n<p>Unter C# und anderen objektorientierten Programmiersprachen gibt es deshalb die sogenannten Konstruktoren. Das sind Parameter, die gleich beim Erstellen einer Klasse &uuml;bergeben werden m&uuml;ssen beziehungsweise k&ouml;nnen.<\/p>\n<p>Bevor Sie eine Klasse mit einem Konstruktor erstellen, m&uuml;ssen Sie sich &uuml;berlegen, welche Varianten Sie f&uuml;r die Initialisierung mit oder ohne Parameter zur Verf&uuml;gung stellen wollen. Eine Klasse <b>Person <\/b>mit den beiden Eigenschaften <b>Vorname <\/b>und <b>Nachname <\/b>kann beispielsweise diese beiden Eigenschaften beim Initialisieren per Parameter entgegennehmen.<\/p>\n<p>Die Definition der Klasse sieht dann etwa wie folgt aus:<\/p>\n<pre>class Person {\r\n     private string vorname;\r\n     private string nachname;\r\n     public Person() {}\r\n     public Person(string Vorname, \r\n             string Nachname) {\r\n         vorname = Vorname;\r\n         nachname = Nachname;\r\n     }\r\n     public string Vorname {\r\n         get { return vorname; }\r\n         set { vorname = value; }\r\n     }\r\n     public string Nachname {\r\n         get { return nachname; }\r\n         set { nachname = value; }\r\n     }<\/pre>\n<p>Hier sehen Sie die beiden privat deklarierten Variablen <b>vorname <\/b>und <b>nachname<\/b>. Au&szlig;erdem sind nat&uuml;rlich die beiden Eigenschaftsmethoden <b>Vorname <\/b>und <b>Nachname <\/b>mit den <b>get<\/b>&#8211; und <b>set<\/b>-Bl&ouml;cken vorhanden.<\/p>\n<p>Neu ist zun&auml;chst die folgende Zeile:<\/p>\n<pre>public Person() {}<\/pre>\n<p>Dies ist der erste Konstruktor. Er erm&ouml;glicht die Initialisierung eines Objekts auf der Basis der Klasse <b>Person<\/b>, ohne direkt eine der beiden Eigenschaften <b>Vorname <\/b>oder <b>Nachname <\/b>&uuml;bergeben zu m&uuml;ssen. Der Konstruktor hat genau den gleichen Namen wie die Klasse selbst. Der Unterschied zu einer normalen &ouml;ffentlichen Variablen ist, dass Sie hinter dem Bezeichner erstens ein rundes Klammernpaar (<b>()<\/b>) und dann noch ein geschweiftes Klammernpaar finden (<b>{}<\/b>).<\/p>\n<p>Der zweite Konstruktor erwartet die &Uuml;bergabe von Werten f&uuml;r die beiden Parameter <b>Vorname <\/b>und <b>Nachname<\/b>. Er hei&szlig;t ebenfalls genauso wie die Klasse, enth&auml;lt aber in Klammern eine Liste der Parameter, die beim Initialisieren &uuml;bergeben werden m&uuml;ssen. Dahinter folgt ein Paar geschweifter Klammern, innerhalb derer die &uuml;bergebenen Parameter <b>Vorname <\/b>und <b>Nachname <\/b>den Variablen <b>vorname <\/b>und <b>nachname <\/b>&uuml;bergeben werden:<\/p>\n<pre>public Person(string Vorname, string Nachname) {\r\n     vorname = Vorname;\r\n     nachname = Nachname;\r\n}<\/pre>\n<p>Die Eigenschaften der Klasse k&ouml;nnen Sie nun gleich beim Initialisieren &uuml;bergeben:<\/p>\n<pre>Person person;\r\nperson = new Person(\"Andr&eacute;\", \"Minhorst\");\r\nConsole.WriteLine(\"{0} {1}\", person.Vorname, \r\n     person.Nachname);\r\n\/\/Ausgabe:\r\n\/\/Andr&eacute; Minhorst<\/pre>\n<p>Wir k&ouml;nnen das Objekt aber, da wir ja auch einen parameterlosen Konstruktor angelegt haben, auch ohne &Uuml;bergabe von Parametern initialisieren und <b>Vorname <\/b>und <b>Nachname <\/b>erst sp&auml;ter &uuml;bergeben.<\/p>\n<p>Wenn es Pflichteigenschaften gibt, ohne welche die Methoden einer Klasse nicht sinnvoll genutzt werden k&ouml;nnen, k&ouml;nnen Sie nat&uuml;rlich auch entscheiden, dass die Eigenschaften auf jeden Fall direkt beim Initialisieren des Objekts gef&uuml;llt werden m&uuml;ssen. Dann legen Sie einfach nur einen Konstruktor an, der alle notwendigen Eigenschaften als Parameter erwartet und lassen den parameterlosen Konstruktor weg.<\/p>\n<h2>Von Class_Initialize zum Konstruktor<\/h2>\n<p>F&uuml;r alle, die von VBA kommen: Unter VBA gibt es in Klassen die beiden Ereignisprozeduren <b>Class_Initialize <\/b>und <b>Class_Terminate<\/b>. Diese werden, soweit implementiert, beim Initialisieren und beim Zerst&ouml;ren der Klasse ausgel&ouml;st &#8211; also beim Setzen der letzten Objektvariablen mit einer Referenz auf die Klasse auf den Wert <b>Nothing<\/b>.<\/p>\n<p>Sie raten richtig: Der beziehungsweise die Konstruktoren ersetzen das Ereignis <b>Initialize <\/b>(zum <b>Terminate<\/b>-Ereignis kommen wir sp&auml;ter). Das hei&szlig;t also, dass Sie im Konstruktor auch solche Anweisungen unterbringen sollten, die immer beim Initialisieren der Klasse ausgef&uuml;hrt werden sollen &#8211; beispielsweise das Einlesen von Informationen aus Datenbanken, das Erstellen weiterer Objekte et cetera. Wenn eine Klasse keinen Konstruktor ben&ouml;tigt, der beim Initialisieren Parameter zur Verf&uuml;gung stellt, aber zu diesem Zeitpunkt dennoch Anweisungen ausf&uuml;hren wollen, verwenden Sie den oben bereits vorgestellten Konstruktor ohne Parameter:<\/p>\n<pre>public Person() {}<\/pre>\n<p>Diesem k&ouml;nnen Sie nat&uuml;rlich beliebige Anweisungen hinzuf&uuml;gen:<\/p>\n<pre>public Person() {\r\n     \/\/... wichtige Anweisungen beim Initialisieren\r\n}<\/pre>\n<h2>Umleitung eines Konstruktoraufrufs<\/h2>\n<p>Stellen wir uns nun vor, wir m&ouml;chten dem Benutzer auch die M&ouml;glichkeit geben, nur den Nachnamen der Person beim Initialisieren an die Klasse <b>Person<\/b> zu &uuml;bergeben. Dazu f&uuml;gen wir einen weiteren Konstruktor zur Klasse hinzu, der nur diesen einen Parameter verwendet:<\/p>\n<pre>public Person_KonstruktorUmleiten(string Nachname)\r\n{\r\n     nachname = Nachname;\r\n}<\/pre>\n<p>Damit haben wir nun eine M&ouml;glichkeit mehr, die Klasse zu initialisieren:<\/p>\n<pre>Person person = new Person(\"Minhorst\");<\/pre>\n<p>Was hat das nun mit der Umleitung eines Konstruktoraufrufs zu tun Nun: wir kommen hier wieder auf die Funktion des Konstruktors als die beim Starten ausgel&ouml;ste Methode zur&uuml;ck, in der Sie Anweisungen zur Vorbereitung des Objekts unterbringen. Diese m&ouml;chten Sie sicherlich nur in einem Konstruktor unterbringen und nicht in jedem einzelnen. Dazu w&auml;hlen Sie dann logischerweise den Konstruktor aus, der die wenigsten Parameter entgegennimmt (im Optimalfall gar keinen).<\/p>\n<p>Verwendet die initialisierende Klasse diesen Konstruktor, l&auml;uft alles nach Plan. Aber was geschieht, wenn einer der Konstruktoren genutzt wird, der einen oder mehrere Parameter verwendet Es w&uuml;rde naheliegen, von diesem aus dann den Konstruktor mit den Anweisungen zu starten, die bei jeder Initialisierung aufgerufen werden sollen.<\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000\"><a style=\"color: #ff0000\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000015\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000015?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000015\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"d3fdc23a4e\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im ersten Teil dieser Artikelreihe haben wir uns die Grundlagen zur objektorientierten Programmierung mit C# angesehen &#8211; zum Beispiel die Klasse Program, das Erstellen neuer Klassen, die Verwendung von Eigenschaften und von Methoden. Dies greifen wir im zweiten Teil auf und gehen auf verschiedene Arten der Eigenschaftsdefinition, Kontruktoren, aufgeteilte Klassen, Objektreferenzen, &Uuml;berladung von Methoden und verschiedene Parameter-Techniken ein.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66022015,662015,44000024,44000009,44000020],"tags":[],"yst_prominent_words":[66062051,66062059,66062061,66062096],"class_list":["post-55000015","post","type-post","status-publish","format-standard","hentry","category-66022015","category-662015","category-Berichte_und_Reporting","category-CProgrammiertechnik","category-Entity_Framework_Core"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"Im ersten Teil dieser Artikelreihe haben wir uns die Grundlagen zur objektorientierten Programmierung mit C# angesehen - zum Beispiel die Klasse Program, das Erstellen neuer Klassen, die Verwendung von Eigenschaften und von Methoden. Dies greifen wir im zweiten Teil auf und gehen auf verschiedene Arten der Eigenschaftsdefinition, Kontruktoren, aufgeteilte Klassen, Objektreferenzen, \u00dcberladung von Methoden und verschiedene Parameter-Techniken ein.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Andr\u00e9 Minhorst\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Objektorientierte Programmierung: Grundlagen II - Visual Basic Entwickler\" \/>\n\t\t<meta property=\"og:description\" content=\"Im ersten Teil dieser Artikelreihe haben wir uns die Grundlagen zur objektorientierten Programmierung mit C# angesehen - zum Beispiel die Klasse Program, das Erstellen neuer Klassen, die Verwendung von Eigenschaften und von Methoden. Dies greifen wir im zweiten Teil auf und gehen auf verschiedene Arten der Eigenschaftsdefinition, Kontruktoren, aufgeteilte Klassen, Objektreferenzen, \u00dcberladung von Methoden und verschiedene Parameter-Techniken ein.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-03-27T19:16:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"-001-11-30T00:00:00+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Objektorientierte Programmierung: Grundlagen II - Visual Basic Entwickler\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Im ersten Teil dieser Artikelreihe haben wir uns die Grundlagen zur objektorientierten Programmierung mit C# angesehen - zum Beispiel die Klasse Program, das Erstellen neuer Klassen, die Verwendung von Eigenschaften und von Methoden. Dies greifen wir im zweiten Teil auf und gehen auf verschiedene Arten der Eigenschaftsdefinition, Kontruktoren, aufgeteilte Klassen, Objektreferenzen, \u00dcberladung von Methoden und verschiedene Parameter-Techniken ein.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Objektorientierte_Programmierung_Grundlagen_II\\\/#blogposting\",\"name\":\"Objektorientierte Programmierung: Grundlagen II - Visual Basic Entwickler\",\"headline\":\"Objektorientierte Programmierung: Grundlagen II\",\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"..\\\/fileadmin\\\/_temp_\\\/2015_02\\\/pic_15_002.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Objektorientierte_Programmierung_Grundlagen_II\\\/#articleImage\"},\"datePublished\":\"2015-04-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"inLanguage\":\"de-DE\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Objektorientierte_Programmierung_Grundlagen_II\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Objektorientierte_Programmierung_Grundlagen_II\\\/#webpage\"},\"articleSection\":\"2\\\/2015, 2015, Berichte und Reporting, C#-Programmiertechnik, Entity Framework Core, felder, logindaten, testzugang, zugriff auf die elemente\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Objektorientierte_Programmierung_Grundlagen_II\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vbentwickler.de\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/#listItem\",\"name\":\"2015\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/#listItem\",\"position\":2,\"name\":\"2015\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/2\\\/2015\\\/#listItem\",\"name\":\"2\\\/2015\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/2\\\/2015\\\/#listItem\",\"position\":3,\"name\":\"2\\\/2015\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/2\\\/2015\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Objektorientierte_Programmierung_Grundlagen_II\\\/#listItem\",\"name\":\"Objektorientierte Programmierung: Grundlagen II\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/#listItem\",\"name\":\"2015\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Objektorientierte_Programmierung_Grundlagen_II\\\/#listItem\",\"position\":4,\"name\":\"Objektorientierte Programmierung: Grundlagen II\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2015\\\/2\\\/2015\\\/#listItem\",\"name\":\"2\\\/2015\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/cropped-header_vbe-1.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Objektorientierte_Programmierung_Grundlagen_II\\\/#organizationLogo\",\"width\":664,\"height\":225},\"image\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Objektorientierte_Programmierung_Grundlagen_II\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Objektorientierte_Programmierung_Grundlagen_II\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Andr\\u00e9 Minhorst\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Objektorientierte_Programmierung_Grundlagen_II\\\/#webpage\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/Objektorientierte_Programmierung_Grundlagen_II\\\/\",\"name\":\"Objektorientierte Programmierung: Grundlagen II - Visual Basic Entwickler\",\"description\":\"Im ersten Teil dieser Artikelreihe haben wir uns die Grundlagen zur objektorientierten Programmierung mit C# angesehen - zum Beispiel die Klasse Program, das Erstellen neuer Klassen, die Verwendung von Eigenschaften und von Methoden. Dies greifen wir im zweiten Teil auf und gehen auf verschiedene Arten der Eigenschaftsdefinition, Kontruktoren, aufgeteilte Klassen, Objektreferenzen, \\u00dcberladung von Methoden und verschiedene Parameter-Techniken ein.\",\"inLanguage\":\"de-DE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Objektorientierte_Programmierung_Grundlagen_II\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"datePublished\":\"2015-04-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"inLanguage\":\"de-DE\",\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Objektorientierte Programmierung: Grundlagen II - Visual Basic Entwickler","description":"Im ersten Teil dieser Artikelreihe haben wir uns die Grundlagen zur objektorientierten Programmierung mit C# angesehen - zum Beispiel die Klasse Program, das Erstellen neuer Klassen, die Verwendung von Eigenschaften und von Methoden. Dies greifen wir im zweiten Teil auf und gehen auf verschiedene Arten der Eigenschaftsdefinition, Kontruktoren, aufgeteilte Klassen, Objektreferenzen, \u00dcberladung von Methoden und verschiedene Parameter-Techniken ein.","canonical_url":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/#blogposting","name":"Objektorientierte Programmierung: Grundlagen II - Visual Basic Entwickler","headline":"Objektorientierte Programmierung: Grundlagen II","author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"},"image":{"@type":"ImageObject","url":"..\/fileadmin\/_temp_\/2015_02\/pic_15_002.png","@id":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/#articleImage"},"datePublished":"2015-04-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00","inLanguage":"de-DE","mainEntityOfPage":{"@id":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/#webpage"},"isPartOf":{"@id":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/#webpage"},"articleSection":"2\/2015, 2015, Berichte und Reporting, C#-Programmiertechnik, Entity Framework Core, felder, logindaten, testzugang, zugriff auf die elemente"},{"@type":"BreadcrumbList","@id":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","position":1,"name":"Home","item":"https:\/\/vbentwickler.de","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2015\/#listItem","name":"2015"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2015\/#listItem","position":2,"name":"2015","item":"https:\/\/vbentwickler.de\/category\/2015\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2015\/2\/2015\/#listItem","name":"2\/2015"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2015\/2\/2015\/#listItem","position":3,"name":"2\/2015","item":"https:\/\/vbentwickler.de\/category\/2015\/2\/2015\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/#listItem","name":"Objektorientierte Programmierung: Grundlagen II"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2015\/#listItem","name":"2015"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/#listItem","position":4,"name":"Objektorientierte Programmierung: Grundlagen II","previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2015\/2\/2015\/#listItem","name":"2\/2015"}}]},{"@type":"Organization","@id":"https:\/\/vbentwickler.de\/#organization","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","url":"https:\/\/vbentwickler.de\/","logo":{"@type":"ImageObject","url":"https:\/\/vbentwickler.de\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","@id":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/#organizationLogo","width":664,"height":225},"image":{"@id":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author","url":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","@id":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","width":96,"height":96,"caption":"Andr\u00e9 Minhorst"}},{"@type":"WebPage","@id":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/#webpage","url":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/","name":"Objektorientierte Programmierung: Grundlagen II - Visual Basic Entwickler","description":"Im ersten Teil dieser Artikelreihe haben wir uns die Grundlagen zur objektorientierten Programmierung mit C# angesehen - zum Beispiel die Klasse Program, das Erstellen neuer Klassen, die Verwendung von Eigenschaften und von Methoden. Dies greifen wir im zweiten Teil auf und gehen auf verschiedene Arten der Eigenschaftsdefinition, Kontruktoren, aufgeteilte Klassen, Objektreferenzen, \u00dcberladung von Methoden und verschiedene Parameter-Techniken ein.","inLanguage":"de-DE","isPartOf":{"@id":"https:\/\/vbentwickler.de\/#website"},"breadcrumb":{"@id":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/#breadcrumblist"},"author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"creator":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"datePublished":"2015-04-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00"},{"@type":"WebSite","@id":"https:\/\/vbentwickler.de\/#website","url":"https:\/\/vbentwickler.de\/","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","inLanguage":"de-DE","publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"}}]},"og:locale":"de_DE","og:site_name":"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","og:type":"article","og:title":"Objektorientierte Programmierung: Grundlagen II - Visual Basic Entwickler","og:description":"Im ersten Teil dieser Artikelreihe haben wir uns die Grundlagen zur objektorientierten Programmierung mit C# angesehen - zum Beispiel die Klasse Program, das Erstellen neuer Klassen, die Verwendung von Eigenschaften und von Methoden. Dies greifen wir im zweiten Teil auf und gehen auf verschiedene Arten der Eigenschaftsdefinition, Kontruktoren, aufgeteilte Klassen, Objektreferenzen, \u00dcberladung von Methoden und verschiedene Parameter-Techniken ein.","og:url":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/","og:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","og:image:secure_url":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","article:published_time":"2020-03-27T19:16:27+00:00","article:modified_time":"-001-11-30T00:00:00+00:00","twitter:card":"summary_large_image","twitter:title":"Objektorientierte Programmierung: Grundlagen II - Visual Basic Entwickler","twitter:description":"Im ersten Teil dieser Artikelreihe haben wir uns die Grundlagen zur objektorientierten Programmierung mit C# angesehen - zum Beispiel die Klasse Program, das Erstellen neuer Klassen, die Verwendung von Eigenschaften und von Methoden. Dies greifen wir im zweiten Teil auf und gehen auf verschiedene Arten der Eigenschaftsdefinition, Kontruktoren, aufgeteilte Klassen, Objektreferenzen, \u00dcberladung von Methoden und verschiedene Parameter-Techniken ein.","twitter:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png"},"aioseo_meta_data":{"post_id":"55000015","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2024-01-30 15:26:23","updated":"2026-05-16 08:12:19","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2015\/\" title=\"2015\">2015<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2015\/2\/2015\/\" title=\"2\/2015\">2\/2015<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tObjektorientierte Programmierung: Grundlagen II\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/vbentwickler.de"},{"label":"2015","link":"https:\/\/vbentwickler.de\/category\/2015\/"},{"label":"2\/2015","link":"https:\/\/vbentwickler.de\/category\/2015\/2\/2015\/"},{"label":"Objektorientierte Programmierung: Grundlagen II","link":"https:\/\/vbentwickler.de\/Objektorientierte_Programmierung_Grundlagen_II\/"}],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000015"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000015\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000015"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}