Skocz do zawartości

Odwołanie się do drugiej klasy


Martita

Recommended Posts

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();
        }

    }


}

 

Link do komentarza
Udostępnij na innych stronach

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...