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

Hermetyzacja funkcji

Object Storage Arubacloud
0 głosów
253 wizyt
pytanie zadane 26 lutego 2017 w C i C++ przez John Doe Obywatel (1,720 p.)
edycja 26 lutego 2017 przez John Doe

Cześć!

Nie mam bladego pojęcia o wzorcach projektowych, a chciałbym zaprojektować funkcję kompresującą tekst przy pomocy kodowania huffmana (nazwijmy ją funkcją główną). Miałaby ona tylko wywoływać inne funkcje pomocnicze i zwracać żądaną wartość.

Pragnąłbym jednak, aby funkcje pomocnicze były widoczne jedynie dla funkcji głównej.

W C# można tworzyć klasy statyczne, co chyba pasowałoby w tej sytuacji. W C++ mogę stworzyć klasę z prywatnym konstruktorem domyślnym i statycznymi funkcjami pomocniczymi, a publiczną statyczną funkcję główną.

Mógłbym też po prostu ograniczyć dane funkcje pomocnicze do jednej jednostki translacji słowem kluczowym static i może coś pomącić z przestrzeniami nazw, ale wydaje mi się to niechlujne.

Jakie rozwiązanie podobnego problemu hermetyzacji funkcji byłoby najelegantsze? :)

 

2 odpowiedzi

0 głosów
odpowiedź 26 lutego 2017 przez CzikaCarry Szeryf (75,340 p.)
To tak, tworzysz klasę w której jest konstruktor, robisz drugą klasę z funkcjami pomocniczymi, ustawiasz friendship między tymi dwoma klasami, a następnie rozszerzasz pierwszą klasę o następne metody przy użyciu ":" (public ClassA : public ClassB)
komentarz 26 lutego 2017 przez John Doe Obywatel (1,720 p.)
Konstruktor? Właśnie w tym rzecz, żeby obiektów nie tworzyć* :D

Dlaczego dwie zaprzyjaźnione klasy? Jaką ma to przewagę nad pierwszym rozwiązaniem jakie zasugerowałem (statyczne metody i użycie private oraz public w klasie). Może to jakiś wzorzec projektowy?

Edit:*nie tworzyć obiektów, ponieważ tworzenie obiektu tylko po to, aby użyć jednej funkcji wydaje się mało eleganckie

Edit2: a może nie zrozumiałem w pełni Twojego pomysłu; jeżeli tak, proszę, popraw mnie :|
komentarz 26 lutego 2017 przez CzikaCarry Szeryf (75,340 p.)
Myślałem, że w klasie masz kilka metod, a chcesz aby tylko jedna mogła korzystać z pozostałych. Widocznie się myliłem :). Twój pierwszy sposób w zamyśle który mi przedstawiłeś jest OK :D
komentarz 26 lutego 2017 przez John Doe Obywatel (1,720 p.)
Mam morze funkcji, a chcę tylko jedną z nich udostępnić a resztę ukryć :)
0 głosów
odpowiedź 26 lutego 2017 przez mokrowski Mędrzec (155,460 p.)
Zastosuj anonimową przestrzeń nazw.
komentarz 26 lutego 2017 przez John Doe Obywatel (1,720 p.)
Ale czy to nie będzie miało tej samej funkcjonalności, co zwyczajne funkcje statyczne? A jeżeli tak, to czy anonimowa przestrzeń nazw jest lepsza od funkcji statycznych?

Podobne pytania

0 głosów
2 odpowiedzi 805 wizyt
pytanie zadane 12 lutego 2016 w C i C++ przez marekl91 Początkujący (380 p.)
+1 głos
2 odpowiedzi 886 wizyt
pytanie zadane 25 marca 2021 w Python przez Patryk01 Obywatel (1,270 p.)
+1 głos
1 odpowiedź 1,249 wizyt
pytanie zadane 10 marca 2019 w Rozwój zawodowy, nauka, praca przez Teslum_369 Gaduła (4,190 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...