Przekazywanie dużej ilości parametrów, błędy z wczytywaniem wartości do zmiennej

Odpowiedz Nowy wątek
2014-12-21 01:37
0

Witajcie,

Chciałbym przekazać metodom w pewnej klasie zmienne z innych klas. Tych zmiennych jest sporo 20-30.
Jak zrobić to najbardziej elegancko? Nie chce przekazywać tych zmiennych jako parametry tej metody- domyślam się, że tak się nie robi.

Z góry dziękuję za odpowiedź.

Pozostało 580 znaków

2014-12-21 02:04
1

Pogrupuj te parametry w obiekty.
Ogólnie trochę za mało napisałeś o tym, jakie są powiązania między tymi klasami i jakiego rodzaju zmienne chcesz przekazywać.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
edytowany 1x, ostatnio: somekind, 2014-12-21 02:05

Pozostało 580 znaków

2014-12-21 02:27
Mały Mleczarz
0

Chce przesyłać float i int.
Klasy nie są ze sobą powiązane (nie dziedzicza po sobie itd).
Ogólnie wygląda to tak, że w jednej głównej klasie wykonywane są obliczenia, a w tych klasach do których chce przekazać zmienne liczone są współczynniki poprawkowe wykorzystywane w klasie głównej

Pozostało 580 znaków

2014-12-21 02:41
1

chyba o to Ci chodzi: http://stackoverflow.com/ques[...]ameters-to-a-c-sharp-function

dalej możesz to też podzielić na metody(dla float i int), jeżeli nie chcesz tego dzielić na klasy(jak wyżej pisał @somekind)


"Perhaps surprisingly, concurrent programming isn’t so much about threads or
locks, any more than civil engineering is about rivets and I-beams."
edytowany 2x, ostatnio: niezdecydowany, 2014-12-21 02:42

Pozostało 580 znaków

2014-12-21 02:59
0

Przeczytałem i nie wiem czy zrozumiałem to w odpowiedni sposób- chodzi o to aby wszystkie moje zmienne które chce udostępnić wrzucić do jednej tablicy i dopiero ta tablicę przekazać następnym klasom i metodom?

Może wytłumaczę dlaczego to musze zrobić.
Mam kod napisany w Fortaranie. Występuje tam Statement o nazwie "common". Jeśli w jednej metodzie wpiszemy
common /x, y/
I w drugiej podamy to samo. Wtedy obie metody będę widziały wartości x i y chociaż będą one zadeklarowane tylko w jednej z nich.
To samo chciałbym zrobić w C#

edytowany 1x, ostatnio: jabol333, 2014-12-21 03:04
zrób jak se chcesz - masz tu jeden ze sposobów - w momencie którym parametry są jednego typu, tak więc robisz sobie metodę na floaty, setFlołty(pierdyliard parametrów) i setInty(pierdyliard parametrów) - niezdecydowany 2014-12-21 03:02
Nie czaje tej wersji po edycji... - niezdecydowany 2014-12-21 03:08
W Fortaranie mam jakieś zmienne np x i y występujące tylko w jednej metodzie. Wykorzystując zapis common /x, y/ możemy uzyskać dostęp do tych zmiennych z każdego miejsca programu. Wystarczy w każdej metodzie w której chcemy mieć dostęp do tych zmiennych wpisać common /x, y/ i juz te zmienne stają się wspólne. Metody które posiadają ten zapis mają referencje do miejsca w pamięci gdzie sa te zmienne - jabol333 2014-12-21 03:16
Ustaw te zmienne jako statyczne. - dam1an 2014-12-21 12:27
dzięki dam1an. Muszę na chwile odłożyć ten projekt, i nie mogę dzisiaj sprawdzić czy static sprawdzi się u mnie w 100%, ale wydaje mi się, że to mi pomoże. Dzięki wielkie - jabol333 2014-12-21 14:52
Ustaw jako static i szukaj błędów latami. - somekind 2014-12-21 17:16

Pozostało 580 znaków

2014-12-21 14:59
0

Aby nie zakładać drugiego tematu zadam jeszcze jedno pytanie.
Na początku programu przypisuje wartości zmiennym poprzez wczytanie ich z pliku. Dokładnie mówiąc mam w pliku tekstowym 52 linijki, w każdej linijce jest inna liczba. Program czyta linijka po linijce tekst i odczytaną wartość przypisuje zmiennej.
Tutaj jest mały problem który przy kilku tysiącach obiegach pętli powoduje u mnie powstanie sporych błędów.
Otóż - gdy program odczytuje z pliku wartość np 5,25000 do zmiennej trafia wartość 5,25002. Dane wczytuje do floatów.
Błędy nie występują gdy wczytywana wartość jest całkowita.

Pozostało 580 znaków

2014-12-21 18:29
0
jabol333 napisał(a):

Przeczytałem i nie wiem czy zrozumiałem to w odpowiedni sposób- chodzi o to aby wszystkie moje zmienne które chce udostępnić wrzucić do jednej tablicy i dopiero ta tablicę przekazać następnym klasom i metodom?

Tak, to jest jakiś sposób. O ile te wartości reprezentują to samo, czyli np. długości odcinków albo wartości pomiarów temperatury. Jeśli niektóre z nich to współrzędne, a niektóre to pomiary temperatury, to opakuj je w klasę z właściwościami o sensownych nazwach.

Może wytłumaczę dlaczego to musze zrobić.
Mam kod napisany w Fortaranie. Występuje tam Statement o nazwie "common". Jeśli w jednej metodzie wpiszemy
common /x, y/
I w drugiej podamy to samo. Wtedy obie metody będę widziały wartości x i y chociaż będą one zadeklarowane tylko w jednej z nich.
To samo chciałbym zrobić w C#

Nie rób "to samo" tylko rób dobrze. Skoro te języki programowania się od siebie różnią, nie próbuj na siłę pisać identycznego kodu, bo wyjdzie z tego bagno.

Aby mieć dostęp do wartości z jednej klasy w drugiej klasie, to masz dwie możliwości - albo je przesłać w argumentach danej metody, albo udostępnić publicznie przez właściwości/metody - w tym przypadku każda klasa będzie miała do nich dostęp.

Opisz co chcesz zrobić, a nie jak chcesz zrobić, to będzie łatwiej Ci pomóc.

jabol333 napisał(a):

Otóż - gdy program odczytuje z pliku wartość np 5,25000 do zmiennej trafia wartość 5,25002. Dane wczytuje do floatów.
Błędy nie występują gdy wczytywana wartość jest całkowita.

Najpierw teoria: http://osilek.mimuw.edu.pl/in[...]prezentacja_liczb#U.C5.82amki
A potem praktyka: nie używaj float, użyj double, może pomoże. Jeśli nie, to przejdź na decimal tylko licz się z tym, że obliczenia będą znacznie wolniejsze.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2014-12-21 18:43
0

Postaram się wytłumaczyć najdokładniej jak potrafię co mam zamiar zrobić.
Otóż mam jedną główną klasę nazwijmy ją "Obliczenia" . W klasie Obliczenia wykonywane są obliczenia (prądów).
Mam też inne klasy w których obliczane są współczynniki wykorzystywane w klasie Obliczenia (np współczynnik wypierania prądu).
Klasy pomocnicze muszą widzieć zmienne z klasy Obliczenia ( jak np gęstość prądu, poślizg wirnika).
Na chwile obecną wszystkie te zmienne przekazałem jako parametry metody, ale z racji ze liczba tych zmiennych jest dwucyfrowa uważam, że zrobiłem to wysoce nie elegancko.

I tutaj pojawia się moje pytanie:
Jak udostępnić metodom w klasach pomocniczych zmienne z klasy głównej w możliwie jak najbardziej elegancki sposób?

Pozdrawiam

wrzuć te zmienne do klasy i przekazuj obiekt? - .Al 2014-12-21 19:32

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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