Skocz do zawartości

Recommended Posts

Napisano

Szukałam i nie znalazłam

Jak odwołać się z konstruktora klasy Osoba do konstruktora klasy Adres?

Wyskakuje mi błąd w klasie Osoba, z którym nie wiem jak sobie poradzić. Już drugi tydzień się z tym męczę.

Proszę o pomoc i wytłumaczenie.

Nie mogę zastosować get, sat i nie mogę zmieniać kodu w klasie Program. W klasie Osoba i Adres wszystkie nazwy muszą pozostać takie jakie są. Kod trzeba przerobić tak aby efekt końcowy był jak na obrazku.

?qa=blob&qa_blobid=13587513354276143587

Klasa Osoba

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Kadry
{
    public class Osoba
    {
        private int numerEwidencyjny;
        private string nazwisko;
        private string imie;
        Adres adres;

        public Osoba(int numerEwidencyjny, string nazwisko, string imie, Adres adres)
        {
            this.numerEwidencyjny = numerEwidencyjny;
            this.nazwisko = nazwisko;
            this.imie = imie;
            this.adres = adres;
        }

        public Osoba(int numerEwidencyjny, string imie, int numerDomu) :
        this(numerEwidencyjny, "Kowalski", imie, "02-222", "Warszawa", "Aleje Jerozolimskie", numerDomu, 0) { }

        public Osoba(ref Osoba osoba)
        {
            numerEwidencyjny = osoba.numerEwidencyjny;
            nazwisko = osoba.nazwisko;
            imie = osoba.imie;
            adres = osoba.adres;
        }

        public string ZwrocKod()
        {
            return adres.kod;
        }

        public string ZwrocMiejscowosc()
        {
            return adres.miejscowosc;
        }

        public string ZwrocNazweUlicy()
        {
            return adres.nazwaUlicy;
        }
       
        public int ZwrocNumerDomu()
        {
            return adres.numerDomu;
        }

        public int ZwrocNumerMieszkania()
        {
            return adres.numerMieszkania;
        }

        public string ZwrocInformacjeOsobowe()
        {
            return string.Format("\n Pan(i) {0} {1} o numerze ewidencyjnym: {2} zamieszkały(a): {3} {4} {5}",
            nazwisko, imie, numerEwidencyjny, ZwrocKod(), ZwrocMiejscowosc(),
          ZwrocNazweUlicy() + " " + ZwrocNumerDomu() + " m" + ZwrocNumerMieszkania());
        }

        public void ZmienDaneOsobowe()
        {
            Console.Write("Podaj imię: "); imie = Console.ReadLine();
            Console.Write("Podaj nazwisko: "); nazwisko = Console.ReadLine();
            do
            {
                Console.Write("Podaj numer ewidencyjny: ");
            }
            while (!int.TryParse(Console.ReadLine(), out numerEwidencyjny));
        }

        public void ZmienAdres()
        {
            Console.Write("Podaj kod: ");
            adres.kod = Console.ReadLine();

            Console.Write("Podaj nazwę miejscowści: ");
            adres.miejscowosc = Console.ReadLine();

            Console.Write("Podaj nazwę ulicy ");
            adres.nazwaUlicy = Console.ReadLine();



            do
            {
                Console.Write("Podaj numer domu: ");

            }

            while (!int.TryParse(Console.ReadLine(), out adres.numerDomu));

            Console.Write("Czy jest numer mieszkania <t/n>: ");
            char c = Console.ReadKey().KeyChar;
            if (c == 't')
            {
                Console.WriteLine();

                do
                {
                    Console.Write("Podaj numer meszkania: ");
                }

                while (!int.TryParse(Console.ReadLine(), out adres.numerMieszkania));

            }

            else
            {
                adres.numerMieszkania = 0;
            }

        }

        public Osoba Klonuj()
        {
            return (Osoba)this.MemberwiseClone();
        }

    }


}

Klasa Adres

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Kadry
{
    public class Adres
    {
        public string kod;
        public string miejscowosc;
        public string nazwaUlicy;
        public int numerDomu;
        public int numerMieszkania;

        public Adres(string kod, string miejscowosc, string nazwaUlicy, int numerDomu, int numerMieszkania)
        {
            this.kod = kod;
            this.miejscowosc = miejscowosc;
            this.nazwaUlicy = nazwaUlicy;
            this.numerDomu = numerDomu;
            this.numerMieszkania = numerMieszkania;
        }

        public Adres(ref Adres adres)
        {
            kod = adres.kod;
            miejscowosc = adres.miejscowosc;
            nazwaUlicy = adres.nazwaUlicy;
            numerDomu = adres.numerDomu;
            numerMieszkania = adres.numerMieszkania;
        }

    }


}

Klasa Program

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Kadry
{
    public class Program
    {
        static void Main(string[] args)
        {
            Osoba os1 = new Osoba(5, "Ola", 43);
            Console.WriteLine(" Oryginał {0}", os1.ZwrocInformacjeOsobowe());
            Console.WriteLine("\n***Zmieniamy klon:***\n");
            Osoba klon1 = os1.Klonuj();
            Console.WriteLine("\n Klon: {0}", klon1.ZwrocInformacjeOsobowe());
            klon1.ZmienDaneOsobowe();
            klon1.ZmienAdres();
            Console.WriteLine("\n Klon: {0}", klon1.ZwrocInformacjeOsobowe());

            Osoba os3 = new Osoba(ref os1);
            Console.WriteLine(" Oryginał {0}", os3.ZwrocInformacjeOsobowe());
            Console.WriteLine("\n***Zmieniamy klon:***\n");
            Console.WriteLine("\n Klon: {0}", klon1.ZwrocInformacjeOsobowe());
            klon1.ZmienDaneOsobowe();
            klon1.ZmienAdres();
            Console.WriteLine("\n Klon: {0}", klon1.ZwrocInformacjeOsobowe());
            Console.ReadKey();
        }

    }


}

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...