Szukałam i nie znalazłam
Mam zadanie
Z klasy osoba wyróżnij klasę adres - O co chodzi?
Stwórz klasę osoba o każdej osobie powinny być informacje tj: numer ewidencyjny, imię, nazwisko,
Stwórz klasę Adres o każdej osobie powinny być informacje tj:kod pocztowy, miejscowość, ulica numer domu, numer mieszkania.
Zakładając, że najczęściej spotykanym nazwiskiem jest Kowalski, firma znajduje się w Warszawie i ma
mieszkania pracownicze przy ulicy Aleje Jerozolimskie,
Stwórz odpowiednie konstruktory nie używając get i set.
Męczę się już tydzień z tym. Mam trochę kodu ale nie wiem co dalej. Mam klasę Osoba, Adres, Program i w Osoba string adres. Proszę o sprawdzenie kodu i nakierowanie jak to dalej zrobić.
Myślałam aby string adres w klasie Osoba odwołać do klasa Adres, ale nie wiem jak się odwołuje i nie wiem czy idę w dobrym kierunku.
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;
}
public Osoba(int numerEwidencyjny, string imie, Adres adres) :
this(numerEwidencyjny, "Kowalski", imie)
{ }
public Osoba(ref Osoba osoba)
{
numerEwidencyjny = osoba.numerEwidencyjny;
nazwisko = osoba.nazwisko;
imie = osoba.imie;
Adres 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, adres, 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 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
{
private string kod;
private string miejscowosc;
private string nazwaUlicy;
private int numerDomu;
private 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(int numerDomu) :
this("02-222", "Warszawa", "Aleje Jerozolimskie", numerDomu, 0)
{ }
public Adres(ref Adres adres)
{
kod = adres.kod;
miejscowosc = adres.miejscowosc;
nazwaUlicy = adres.nazwaUlicy;
numerDomu = adres.numerDomu;
numerMieszkania = adres.numerMieszkania;
}
public string ZwrocKod()
{
return kod;
}
public string ZwrocMiejscowosc()
{
return miejscowosc;
}
public string ZwrocNazweUlicy()
{
return nazwaUlicy;
}
public int ZwrocNumerDomu()
{
return numerDomu;
}
public int ZwrocNumerMieszkania()
{
return numerMieszkania;
}
public string ZwrocInformacjeOsobowe()
{
return string.Format(" {0} {1} {2}",
ZwrocKod(), ZwrocMiejscowosc(),
ZwrocNazweUlicy() + " " + ZwrocNumerDomu() + " m" + ZwrocNumerMieszkania());
}
public void ZmienAdres()
{
Console.Write("Podaj kod: ");
kod = Console.ReadLine();
Console.Write("Podaj nazwę miejscowści: ");
miejscowosc = Console.ReadLine();
Console.Write("Podaj nazwę ulicy ");
nazwaUlicy = Console.ReadLine();
do
{
Console.Write("Podaj numer domu: ");
}
while (!int.TryParse(Console.ReadLine(), out 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 numerMieszkania));
}
else
{
numerMieszkania = 0;
}
}
}
}
Klasa Program
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kadry
{
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();
}
}
}
Z zadaniem dostałam kod do przerobienia
Klasa Program jak wyżej.
Klasa Osoba
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace KadryStart
{
class Osoba
{
private string nazwisko;
private string imie;
private int numerEwidencyjny;
private string miejscowosc;
private string kod;
private string nazwaUlicy;
private int numerDomu;
private int numerMieszkania;
public Osoba(int numerEwidencyjny, string imie, string nazwisko, int numerDomu, int numerMieszkania,
string nazwaUlicy, string kod, string miejscowosc)
{
this.numerEwidencyjny = numerEwidencyjny;
this.imie = imie;
this.nazwisko = nazwisko;
this.miejscowosc = miejscowosc;
this.kod = kod;
this.nazwaUlicy = nazwaUlicy;
this.numerDomu = numerDomu;
this.numerMieszkania = numerMieszkania;
}
public Osoba(int numerEwidencyjny, string imie, int numerDomu) :
this(numerEwidencyjny, imie, "Kowalski", numerDomu, 0, "Aleje Jerozolimskie", "02-
222", "Warszawa") { }
public Osoba(ref Osoba osoba)
{
numerEwidencyjny = osoba.numerEwidencyjny; imie = osoba.imie; nazwisko
= osoba.nazwisko; miejscowosc = osoba.miejscowosc;
kod = osoba.kod; nazwaUlicy = osoba.nazwaUlicy; numerDomu =
osoba.numerDomu; numerMieszkania = osoba.numerMieszkania;
}
public string ZwrocInformacjeOsobowe()
{
return string.Format("\n Pan(i) {0} {1} o numerze ewidencyjnym: {2} zamieszkały(a): {3} {4} {5}",
imie, nazwisko, numerEwidencyjny, ZwrocMiejscowosc(),
ZwrocKod(), ZwrocNazweUlicy() + " " + ZwrocNumerDomu() + " m" + ZwrocNumerMieszkania());
}
public string ZwrocMiejscowosc() { return miejscowosc; }
public string ZwrocNazweUlicy() { return nazwaUlicy; }
public string ZwrocKod() { return kod; }
public int ZwrocNumerDomu() { return numerDomu; }
public int ZwrocNumerMieszkania() { return numerMieszkania;
}
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 nazwę miejscowści: "); miejscowosc =
Console.ReadLine();
Console.Write("Podaj nazwę ulicy "); nazwaUlicy = Console.ReadLine();
Console.Write("Podaj kod: "); kod = Console.ReadLine();
do
{
Console.Write("Podaj numer domu: ");
}
while (!int.TryParse(Console.ReadLine(), out 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 numerMieszkania));
}
else
{
numerMieszkania = 0;
}
}
public Osoba Klonuj()
{
return (Osoba)this.MemberwiseClone(); // metoda MemberwiseClone z
biblioteki .NET, dla każdego
}
}
}