C# Problem ze zmienna typu obiekt. Zadanie z tworzenia klas.

0

Siema, jestem tu nowy takze prosze o male wybaczenie w razie jakiegos tutejszego faux pas.
Mam zadanie o takiej tresci:
Stwórz klasy:
• Osoba z polami: imie, nazwisko, wiek, konstruktorem inicjującym wszystkie pola oraz
metodą Wypisz.
• Książka z polami: tytul, autor (typu Osoba), data wydania oraz metodą Wypisz
Utwórz różne obiekty stworzonych klas. Wykonaj metody Wypisz.

Mam problem z druga metoda wypisz() i jej wypisaniem imienia i nazwiska autora. Bylbym wdzieczny bardzo za pomoc.

using System;


namespace Zadanie6
{
    class Program
    {
        static void Main(string[] args)
        {
            Osoba obiektOsoba = new Osoba("Boleslaw", "Prus", 33);
            obiektOsoba.Wypisz();

            DateTime data = new DateTime(2018, 01, 01);



            Ksiazka obiektKsiazka = new Ksiazka("Lalka", obiektOsoba,data);
            obiektKsiazka.Wypisz();

            Console.ReadKey();
        }
    }
}

using System;


namespace Zadanie6
{
    class Osoba
    {
        public Osoba(string imieK, string nazwiskoK, int wiekK)
        {
            imie = imieK;
            nazwisko = nazwiskoK;
            wiek = wiekK;
        }

        public string imie;
        public string nazwisko;
        public int wiek;

        public void Wypisz()
        {
            Console.WriteLine("Imie: {0}\nNazwisko: {1}\nWiek: {2}\n", imie, nazwisko, wiek);
        }

    }
}


using System;

    /*Książka z polami: tytul, autor(typu Osoba), data wydania oraz metodą Wypisz
    Utwórz różne obiekty stworzonych klas.Wykonaj metody Wypisz.*/

namespace Zadanie6
{
    class Ksiazka
    {
        public Ksiazka(string tytulK, Osoba autorK, DateTime dataWydaniaK)
        {
            tytul = tytulK;
            autor = autorK;
            dataWydania = dataWydaniaK;
            
        }

        public string tytul;
        public Osoba autor;
        public DateTime dataWydania;


        public void Wypisz()
        {
            Console.WriteLine("Tytul: {0}\nAutor: {1}\nData wydania: {2}\n", tytul, autor, dataWydania);
        }
    }
}
1

No i w książce, w Wypisz() wywołaj odpowiednią metodę Osoby, czyli
"autor.Wypisz()".

Done and ready :)

1

Nie wiem czy takie było zamierzenie autora treści zadania co do tych pól ale lepiej było by:

public class Osoba
{
  public string Imie {get;private set;}
  // itd, konstruktor bez zmian
}

Lepiej korzystać z propertiesów.

0

Nwm czy tak mozna ale w klasie Ksiazka w metodzie Wypisz(), zmodyfikowalem Console.WriteLine() na cos takiego :
Console.WriteLine("Tytul: {0}\nAutor: {1}\nData wydania: {2}\n", tytul, autor.imie + " " + autor.nazwisko, dataWydania);
no i teraz dziala jak chcialem zeby dzialalo czyli przy wypisaniu autora podaje jego imie i nazwisko wziete z klasy Osoba, ktora zawiera te dane

1

Tak, możesz tak zrobić. Pola imie, nazwisko klasy osoba są publiczne, czyli możesz je odczytywać w książce.

1 użytkowników online, w tym zalogowanych: 0, gości: 1