W zamyśle miało zwracać null, gdy chodź jeden z obiektów jest niezainicjowany
Czy gdybyś pracował w sklepie, i ktoś by Cię spytał, czy masz chleb, to odpowiedziałbyś: "sprzątaczka dzisiaj nie przyszła"?
Bo to mniej więcej robi ta metoda obecnie. Klienta klasy nie obchodzi jej wewnętrzna implementacja, co on sobie ma zrobić z informacją "obiekt nie działa" w sytuacji gdy pyta o stan połączenia? Po prostu inicjalizuj wszystkie obiekty i nie pisz cieknącego kodu.
BTW: http://lambda-the-ultimate.org/node/3186
Rozumiem, że 1 plik - 1 klasa?
No raczej.
Zaraz wyodrębnię metody pomocnicze dla GUI do innego pliku.
Nie pliku tylko klasy. I trzymaj ją w projekcie GUI, albo pomocniczym GUI, a nie z rdzeniem aplikacji.
To, że zmieniam parametry zamiast tworzenia nowego obiektu to jakiś wielki błąd?
W ten sposób wprowadzasz niepotrzebną mutowalność, której efektem będzie najprawdopodobniej więcej dziwnych błędów wynikającej z przypadkowej zmiany stanu obiektu. Kod trzeba pisać tak, żeby błędów było jak najmniej.
No i w tej sytuacji trudno to nazwać programowaniem obiektowym, bo dla Ciebie klasa to jedynie zbiór funkcji.