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