• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak podejść do zadania - C# + konstruktory

Object Storage Arubacloud
0 głosów
501 wizyt
pytanie zadane 19 listopada 2020 w C# przez Muzykowy Nowicjusz (120 p.)

Cześć, mam problem z pewnym zadaniem do szkoły i może komuś uda się mnie nakierować w tym temacie.
Otóż mam zadanie:
Twoja firma opracowuje program kadrowy dla pewnej firmy.
O każdej osobie powinieneś posiadać następujące informacje:
Klasa Osoba
imię
nazwisko
numerEwidencyjny
adresZamieszkania
// Klasa Adres zawiera następujące dane:
nazwaUlicy
miejscowosc
numerDomu
numerMieszkania
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.

Założyłem, że w takiej sytuacji, mogą się pojawiać takie kombinacje:

Wartości
Nazwisko Miasto Ulica
- - Aleje Jerozolimskie
- Warszawa -
Kowalski - -
Kowalski Warszawa Aleje Jerozolimskie
Kowalski Warszawa -
- Warszawa Aleje Jerozolimskie

Chciałbym móc tworzyć obiekty Osoba z danymi imię, nazwisko, numerEwidencyjny, adresZamieszkania( i tutaj nazwaUlicy, miejscowosc, numerDomu, numerMieszkania).
Najpierw zrobiłem wszystko w jednej klasie Osoba i chciałem użyć konstruktorów na wszystkie przypadki. Ale wtedy dowiedziałem się, ze nie mogę konstruktorów, które przyjmują tą samą ilość argumentów o tym samym typie(np. jeden konstruktor nazwisko(string) + ulica(string), a drugi nazwisko(string) + miasto(string).
Zacząłem od nowa, i zaciąłem się na tym, że napisałem dwie osobne klasy Osoba i Adres i nie wiem co powinienem dalej zrobić żeby spełnić swoje założenia.

using System;
using System.Collections.Generic;
using System.Text;

namespace W3_P3
{
    public class Osoba

    {
        string name;
        string surname;
        string registrationNumber;
        Adres adress;
        public string GetData()
        {
            string enteredData = Console.ReadLine();
            return enteredData;
        }

        
        public Osoba(string name, string surname, string registrationNumber, Adres adress)
        {
            this.name = name;
            this.surname = surname;
            this.registrationNumber = registrationNumber;
            this.adress = adress;
            
        }                    
        
        public void printData()
        {
            Console.WriteLine($"Imie: {name}\nNazwisko: {surname}\nNumer ewidencyjny: {registrationNumber}");            
        }
    }
    public class Adres
    {
        public string town;
        public string streetName;
        public string houseNumber;
        public string flatNumber;        

        public Adres(string town, string streetName, string houseNumber, string flatNumber)
        {
            this.town = town;
            this.streetName = streetName;
            this.houseNumber = houseNumber;
            this.flatNumber = flatNumber;            
        }
        public Adres(string town)
        

        

        public void printData()
        {
            Console.WriteLine($"Nazwa miasta: {town}\nNazwa ulicy: {streetName}\nNumer domu: {houseNumber}\nNumer mieszkania: {flatNumber}");
        }
        public string GetData()

        {
            string enteredData = Console.ReadLine();
            return enteredData;
        }

    }
}

1 odpowiedź

0 głosów
odpowiedź 19 listopada 2020 przez Snejki Stary wyjadacz (14,520 p.)

Skorzystałbym z domyślnych parametrów dla konstruktora, przykładowo 

Osoba(string imie, string nazwisko, string miasto = "Mielec") {}

w tym wypadku, gdy wywołasz konstruktor i wprowadzisz tylko imie i nazwisko, to miasto otrzyma wartość Mielec.

komentarz 19 listopada 2020 przez Muzykowy Nowicjusz (120 p.)
...
komentarz 19 listopada 2020 przez Muzykowy Nowicjusz (120 p.)
Osoba(string imie, string nazwisko, string miasto = "Mielec") {}

Osoba(string imie, string ulica, string miasto = "Warszawa"){}

tam nie  będzie takich samych problemów?, że podaję X argumentów tego samego typu i kompilator nie rozróżni?
komentarz 19 listopada 2020 przez Ghost Bywalec (2,930 p.)

Tworzysz jeden

Osoba(string imie, string nazwisko, string miast = "Mielc")

I potem robisz tak

Osoba("Jan", "Kowalski") - tutaj miasto to będzie Mielc

Ale jeżeli będziesz chcieć mieć Warszawę

Osoba("Ania", "Nowak", "Warszawa")

Podobne pytania

+1 głos
1 odpowiedź 508 wizyt
pytanie zadane 12 sierpnia 2019 w C# przez moringnewbie Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 180 wizyt
pytanie zadane 1 października 2020 w C# przez Comparion Obywatel (1,810 p.)
–1 głos
1 odpowiedź 192 wizyt
pytanie zadane 6 października 2018 w C# przez konu33 Nowicjusz (210 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...