Znaczenie get set i funkcji

0

Cześć.

Stoję przed pewnym dylematem.
Mam klasę, która posiada szereg atrybutów. Są to np mail, imię nazwisko, miasto, ulica, kod pocztowy, nr domu, nr mieszkania itp. Tych atrybutów jest z około 10-15.

Podczas tworzenia obiektu, każdy atrybut powinien zostać uzupełniony pewną wartością.
W jaki sposób najlepiej to rozwiązać?
Nie będę przecież tworzyć konstruktora z 15 parametrami :D.
Listowanie kolejnych 15 atrybutów i podpinanie pod nie wartości też nie jest zbyt eleganckie (15 linijkowe przypisywanie danych? O_o)

myślałem nad stworzeniem funkcji np
public void SetPersonalData(string, string, string);
public void SetAddressData(int, int, string);
...
itp.

A Wy jaki sposób byście polecali?

Drugie moje pytanie brzmi:

  • Jaka jest różnica pomiędzy get/set, a funkcjami zwracającymi i przypisującymi (np. string GetName() oraz void SetName(string name))?

Jedyne o czym wiem to, to iż get/set można zbindować ładnie pod gridem itp. Jednak jakie są jeszcze inne różnice?

0

W C# używa się właściwości zamiast funkcji-akcesorów. I nie atrybuty, bo to co innego, tylko właśnie właściwości. Można pola pogrupować czyli, adres to jedna klasa, itd. Potem we właściwościach inicjalizować właśnie te poszczególne obiekt np. adres, a nie po kolei miasto, ulica itd.

Podczas tworzenia obiektu, każdy atrybut powinien zostać uzupełniony pewną wartością.

Faktycznie chcesz podczas obiektu zainicjalizować te pola? Bo jak tak, to nie możesz użyć metod ani właściwości tylko to musi być w konstruktorze, skoro przy tworzeniu.

0

No nie podczas tworzenia tylko zaraz po :]

To grupowanie na adres itp, rzeczywiście jest najlepszy chociaż nie każde dane da się tak zrobić i tak pozostanie w ten sposób około 7 właściwości.

Proszę jeszcze o wyjaśnienie:
Co z tego wynika oraz jakie niosą za sobą konsekwencje zastosowania:
get/set zamiast funkcji?

Bo to, że używa się w c# get/set nic mi nie mówi, gdyż to tylko pusta regułka, która mówi "tak się robi i już" , a ja jednak oczekuję konkretów, DLACZEGO tak się robi. Co się stanie jeśli zamiast get napiszę funkcję zwracającą? Co to zmieni w moim projekcie?
Chodzi mi o to bym zrozumiał dlaczego używa się get/set. Będę wdzięczny za odpowiedź :)

0

Jest to w gruncie rzeczy lukier składniowy. Jest po prostu krócej to raz, a dwa - staramy się trzymać jednych konwencji. W każdym razie - czego nie wybierzesz - najważniejsze to być konsekwentnym.

0

Aha no i teraz rozumiem, bardzo dziękuję za pomoc. :)

0

trzy - wygodniej, bo właściwości są praktycznie pokazywane w intelisense w VisualStudio, Mono itp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1