Laden...

Problem mit Aufgabe

Erstellt von markuss21 vor 18 Jahren Letzter Beitrag vor 18 Jahren 3.342 Views
M
markuss21 Themenstarter:in
121 Beiträge seit 2006
vor 18 Jahren
Problem mit Aufgabe

Hi,

Kann mir jemand mit folgendem Code helfen ? Ich habe dies als Hausaufgabe bekommen, aber leider komme ich nicht drauf. Wäre über jeden Rat dankbar !

using Personal;
using System;




	namespace Personal
	{
		//Schritt 2: Klasse Firma erstellen
		//- public Eigenschaft: Array mitarbeiter mit 20 Elementen vom Typ Mitarbeiter2
		//- Destruktor: Löscht alle eventuell noch vorhandenen Referenzen des Arrays




		class firma
		{
			private string nachname;
			private DateTime geburtsdatum;

			//Schritt 1: Konstruktoren erstellen
			public string[] mitarbeiter;
			


		
		
			public string Nachname
			{
				get{ return nachname; }
				set{ nachname = value; }
			}
			public DateTime Geburtsdatum
			{
				get{ return geburtsdatum; }
				set{ geburtsdatum = value; }
			}
			public int Alter
			{
				get
				{
					DateTime heute = DateTime.Today;
					int ergebnis = heute.Year - geburtsdatum .Year;
					if ((heute.Month < geburtsdatum .Month) || ((heute.Month == geburtsdatum .Month) && (heute.Day < geburtsdatum .Day)))
					{
						ergebnis--;
					}			
					return ergebnis;
				}
			}

			public decimal Einkommen()
			{
				return 3500M + Alter * 20;
			}
		}
	}

	public class Mitarbeiter2Programm
	{
		public static void Main()
		{
			//Schritt 3: Mitarbeiter mit verschiedenen Konstruktoren erzeugen
			//Schritt 4: Firma erzeugen und 3. Mitarbeiter im Array speichern
			//Schritt 5: Neuen Mitarbeiter direkt im Array speichern
			Console.WriteLine("Nachname des Mitarbeiters: " + firma.mitarbeiter[0].Nachname);
			Console.WriteLine("Geburtsdatum: " + firma.mitarbeiter[0].Geburtsdatum);
			Console.WriteLine("Alter: " + firma.mitarbeiter[0].Alter);
			Console.WriteLine("Einkommen: " + firma.mitarbeiter[0].Einkommen());
			Console.WriteLine("Garbage Collection aufrufen");
			//Schritt 6: Referenz auf Firma löschen und Garbage Collector aufrufen
		}
	}

564 Beiträge seit 2006
vor 18 Jahren

Hi!

Sollen wir die Kommentare mit Code ausfüllen? Wir können die bei Problemen helfen, aber wir werden nicht deine Hausaufgaben machen! Schaue dir doch mal die entsprechenden Grundlagen an (zB guide to C#) und versuche dann damit die Aufgaben zu lösen. Es wird dir sicher auch nicht viel bringen, wenn wir das alles für dich hinschreiben. Die Hausaufgabe ist dazu da, damit du es verstehst! 😉

der Marcel

:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]

6.862 Beiträge seit 2003
vor 18 Jahren

Kann dem Marcel nur zustimmen! Wir sind kein Hausaugebenlösungsforum 😉

Wobei die Aufgabe an sich auch nen paar fragwürdige Schritte beinhaltet...
An sagen dir die Schritte doch genau was du machen sollst, wo haperts denn?

Baka wa shinanakya naoranai.

Mein XING Profil.

M
markuss21 Themenstarter:in
121 Beiträge seit 2006
vor 18 Jahren
Homework

WOllte ja keine komplette Lösung sondern lediglich n paaar Tipps auf was ich achten sollte.

z.b.

Console.WriteLine("Nachname des Mitarbeiters: " + firma.mitarbeiter[0].Nachname);

Wo soll ich das deklarieren ? Verstehe im Moment gar nix mehr !!

564 Beiträge seit 2006
vor 18 Jahren

Hi!

Du kannst nicht einfach mit

firma.mitarbeiter[0].Nachname

auf die Klassenmember zugreifen.
Es gibt 2 Möglichkeiten, eine schlechte und eine gute.
Die Schlechte: Du deklarierst die Klassenmember von firma als static, dann wäre dein Zugriff ok
Die Gute: Du instanziierst firma und greifst auf die Instanzmember zu. Das gute an der Variante: Du kannst mehrere Firmen verwalten, indem du für jede Firma eine neue Instanz von firma erstellst.

Beispiel:


firma musterFirma = new firma();
Console.WriteLine("Nachname des Mitarbeiters: " + musterFirma .mitarbeiter[0].Nachname);

Viel Erfolg!

der Marcel

:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]

M
markuss21 Themenstarter:in
121 Beiträge seit 2006
vor 18 Jahren
ort

und wo im code sollte das dann passieren ?

Danke schomal !

V
842 Beiträge seit 2003
vor 18 Jahren

In diesem Fall bevor du die Variable das erste mal benötigst, also in deinem Fall am Besten in der Main-Funktion:

public static void Main()
{
  firma musterFirma = new firma();
  Console.WriteLine("Nachname des Mitarbeiters: " + musterFirma .mitarbeiter[0].Nachname);
  // usw.
}

Ich würde dir auch mal ein Tutorial oder ein Buch noch zusätzlich empfehlen, weil das zu den Grundlagen gehört und man fast als erstes lernen sollte.

564 Beiträge seit 2006
vor 18 Jahren

Hi!

So wie ich es sehe, ist das von mir beschriebene instanziieren Schritt 4. Vorher solltest du aber Schritt 1 ausführen und deiner Klasse Konstruktoren hinzufügen, damit das Array-Objekt auch erzeugt wird. Sonst wirst du beim Zugriff darauf eine NullReferenceException erhalten. Wenn du nicht weißt, was Konstruktoren sind, empfehle ich dir nochmals den guide to C#. Überhaupt dürftest du mit deiner Hausaufgabe nur weiterkommen, wenn du dir jetzt mal den guide zur Gemüte führst. Um ihn komplett zu lesen, wirst du zwar Zeit brauchen, aber hinterher dürften die Aufgaben fast ein Klacks für dich sein. Für die Fragen, die dann noch offen bleiben, stehen auch in der MSDN interessante Sachen (zB Garbage Collector) für dich. 😉

der Marcel

:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]

M
markuss21 Themenstarter:in
121 Beiträge seit 2006
vor 18 Jahren
fehler

wenn ich das soweit anpasse bekomme ich folgenden Fehler:

F:\Visual Studio-Projekte\Chapter5_Aufgabe2\Chapter5_Aufgabe2\Class1.cs(73): 'string' enthält keine Definition für 'Nachname'

Komme einfach nicht mit klar, muss das bald abgeben ! Könnt ihr mit nicht etwas mehr helfen. Schau mir das Tutorial auf jedenfall an !

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo markuss21,

die Intensität der Hilfe, die du hier im Forum bekommst, richtet sich nicht nach deinem Abgabetermin.

Die Fehlermeldung ist relativ klar: Du versuchts bei einem String-Objekt auf die Eigenschaft Nachname zuzugreifen, die es da natürlich nicht gibt.

Sorry, zur Not musst du mal eine schlechte Lösung abgeben und mit der nächten Aufgabe früher anfangen bzw. mehr Zeit darauf investieren, dir die Grundlagen anzueignen.

herbivore

564 Beiträge seit 2006
vor 18 Jahren

Hi markuss21!

Verstehe es nicht falsch, bei Problemen helfen wir gerne weiter. In diesem Forum basiert jedoch alles auf freiwilliger Arbeit, wobei manche von uns einen erheblichen Teil ihrer Freizeit darauf verwenden. Daher wirst du auch nur Antworten bekommen, wenn jemand da ist, der sie dir gibt, unabhängig von Abgabeterminen oder sonstigem. Zudem müssen wir davon ausgehen, dass du dir die Grundlagen zu C# aneignest und Probleme ersteinmal versuchst selbst mit Hilfe der MSDN, Forumssuche oder Google zu lösen, da das Forum nicht jedem eine detaillierte Einführung in die Programmierung geben kann. Das kann ein Forum einfach nicht.
Daher schließe ich mich herbivore an, indem ich dir rate, das nächste mal eher anzufangen und dir die Grundlagen anzueignen.

der Marcel

:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]

13 Beiträge seit 2006
vor 18 Jahren

Ein Tip von mir, versuch es mal mit Webcasts, hat mir auch sehr geholfen am Anfang.

Aktuell läuft eine Grundlagenserie über C#, die ersten drei Teile sind schon zum Download verfügbar. Jeder Teil geht etwa 1h, diese Zeit solltest du mindestens investieren um einen ersten Überblick bekommen. Zusätzlich solltest du den Stoff dann mit etwas Lesematerial nacharbeiten.

Hier der Link zur Serie:

https://www.microsoft.com/germany/msdn/webcasts/serien/MSDNWCS-0604-01.mspx