[C++/CLI] Implementacja metod tylko w jednej klasie?


(przemekKK) #1

W Windows Forms Application metody implementuje się w klasie standardowo nazwanej Form1. Czy to rozwiązanie jest prawidłowe? Wiadomo, że programy składają się nie tylko z pliku exe, ale także z innych np. dll. To w przypadku pisania dużego projektu program składać się będzie tylko z jednego pliku exe? Czy należy definicje metod umieszczać samodzielnie w innych plikach?


(Fiołek) #2

Dobrze rozumiem? Chcesz dla każdej klasy tworzyć oddzielną DLL-kę? Takie rozwiązanie jest trudne w utrzymaniu i mniej wydajne. Jeśli nie masz zamiaru używać danej klasy w innych projektach to jest nieopłacalne. Klasy można dzielić na pomniejsze pliki źródłowe, ale nie na pojedyncze biblioteki, bo jest to rozwiązanie bez sensu.


(przemekKK) #3

Chodzi mi o to, czy powinienem definiować wszystkie metody używane w programie tylko w klasie okna czy niektóre z nich przenosić do osobnych plików...?

Jak dołącza się pliki dll? W dokumentacji MSDN nie mogę znaleźć.


(Fiołek) #4

Nie, nie wszystko powinno być oparte na klasię okna. Radzę zapoznać się z OOP, bo widze, że kuleje u Ciebie.

Referencje(ang. references).


(somekind) #5

Liczba klas nie ma związku z liczbą plików wykonywalnych. Możesz mieć w projekcie sto klas, które zostaną skompilowane do jednego pliku exe/dll.

Biblioteki dll tworzysz, gdy chcesz jakąś funkcjonalność dzielić między projektami, albo udostępniać na zewnątrz. Np. napiszesz własne kodeki audio bądź bibliotekę menedżera bazy danych.

Metody nie znajdują się w plikach, tylko w klasach. Kod program w języku obiektowym składa się głównie z definicji klas, jeśli każda z nich znajduje się w oddzielnym pliku, to masz po prostu porządek w projekcie. Umieszczanie wszystkich operacji w postaci metod w klasie okna (którego zazwyczaj powstaje jeden obiekt) jest po prostu pisaniem kodu (co najwyżej) strukturalnego i niepełnym wykorzystaniem możliwości języka, ergo utrudnianiem sobie życia. Pomyśl raczej w ten sposób, że klasa okna odpowiada za obsługę komunikacji (pobieranie poleceń i wyświetlanie danych) z użytkownikiem, zaś za wszelkie obliczenia, operacje na danych, konfiguracje, itp. powinny odpowiadać inne, wyspecjalizowane klasy. To tak w skrócie :wink:

Zresztą, pisanie w C++/CLI, który jest dziwną hybrydą powstałą na bazie C++, który również jest dziwną hybrydą... Masochizm :stuck_out_tongue: