Forum Informatyka UJ forum Strona Główna Informatyka UJ forum
Rocznik 2005 - czyli najlepsze forum w sieci
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

jak to powinno wygladac aby bylo ladne obiektowo orientowane

 
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Programowanie
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
ostoj
Przewijak Tasmy



Dołączył: 08 Lis 2005
Posty: 883
Przeczytał: 0 tematów

Skąd: Tychy

PostWysłany: Czw 14:10, 15 Cze 2006    Temat postu: jak to powinno wygladac aby bylo ladne obiektowo orientowane

implementuje sobie drzewka czerwono-czarne w c++. w zasadzie dopiero zaczalem, totez kodu wiele nie ma, ale pojawil sie ciekawy problem. o ile to co zrobilem do tej pory dziala, tak jak powinno, o tyle zastanawiam sie na ile to ladne, obiektowo orientowane, prawidlowo poenkapsulowane itp itd. bo tak na moje to cos tutaj nie gra :)

to jest fragment mojej glownej klasy:

Kod:
class RBTree
{
      class Node{
       public:
          int key;
          Node *left, *right, *parent;
          Color color;
      };
     
      Node *root;
      void In(const Node *node);
 public:
      RBTree(int el);
      void Inorder();
      Node * Search(int el);
      void Insert(int el);
};


to jest fragment odpowiedzialny za przeglad inorder:

Kod:
void RBTree::Inorder()
{
      In(root);
}


void RBTree::In(const Node *node)
{     
      if (node != NULL)
      {
           In(node->left);
           cout << node->key << " ";
           In(node->right);
      }
}


to jest kod funkcji search:

Kod:
RBTree::Node * RBTree::Search(int el)
{
      Node *node = root;
      while ((node != NULL) && (node->key != el))
      {
            if (node->key < el)
                 { node = node->left; }
            else { node = node->right; };
      }
      return node;
}


a to jest fragment maina:

Kod:
RBTree tree(15);
tree.Inorder();
cout<< ( (tree.Search(15)) ? "Tak" : "Nie" );


prosze was, abyscie na to rzucili okiem i jesli uwazacie, ze mozna to zrobic lepiej, powiedzili o tym. z gory bardzo dziekuje.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
flower
alkoholik



Dołączył: 18 Lis 2005
Posty: 481
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Czw 14:26, 15 Cze 2006    Temat postu: Re: jak to powinno wygladac aby bylo ladne obiektowo oriento

ostoj napisał:
o tyle zastanawiam sie na ile to ladne, obiektowo orientowane, prawidlowo poenkapsulowane


programowanie obiektowe to czyste ZLOOOOOOOOOOOOOOO :twisted: :twisted: :twisted:
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
ostoj
Przewijak Tasmy



Dołączył: 08 Lis 2005
Posty: 883
Przeczytał: 0 tematów

Skąd: Tychy

PostWysłany: Czw 14:28, 15 Cze 2006    Temat postu:

dzieki za konkretne wskazowki :)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
flower
alkoholik



Dołączył: 18 Lis 2005
Posty: 481
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Czw 22:50, 15 Cze 2006    Temat postu:

ostoj napisał:
dzieki za konkretne wskazowki :)


nie ma za co, zawsze sluze rzeczowa pomoca :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Madras
Omylny Admin



Dołączył: 09 Lis 2005
Posty: 2021
Przeczytał: 0 tematów

Skąd: Z Pokoju :]

PostWysłany: Czw 23:04, 15 Cze 2006    Temat postu:

Zamiast pisać wszędzie argument typu int lepiej zrobić typedef int TypKlucza i w odpowiednich miejscach zamienić int na TypKlucza, dzięki temu gdy będziesz chciał przejść na stringi, wystarczy zmienić tym klucza w jednym miejscu, zamiast latać po całym programie.
Poza tym w tym ten kod nie za bardzo jest OOP z jednej przyczyny - jak to stwierdził [link widoczny dla zalogowanych] - programowanie orientowane obiektowo zaczyna się wtedy, gdy świadomie korzystamy z funkcji wirtualnych ;). Póki co, jest to tylko programowanie obiektowe.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
exeman
Mistrz grilla



Dołączył: 03 Lut 2006
Posty: 1603
Przeczytał: 0 tematów

Skąd: znienacka

PostWysłany: Pią 0:10, 16 Cze 2006    Temat postu:

Nie rozumiem dlaczego na tej uczelni taki nacisk klada na programowanie zorientowane obiektowo, przeciez to jest cholernie nieoptymalne i czesto sztuczne.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
flower
alkoholik



Dołączył: 18 Lis 2005
Posty: 481
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Pią 1:15, 16 Cze 2006    Temat postu:

bo to jest teraz trendy

no a inna sprawa ze mimo wszystko jak zespol programistow pracuje nad jakims duzym softem, to taki z grubsza podzial na klasy bardzo ulatwia sprawe i koordynacje calego projektu.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
ostoj
Przewijak Tasmy



Dołączył: 08 Lis 2005
Posty: 883
Przeczytał: 0 tematów

Skąd: Tychy

PostWysłany: Pią 9:49, 16 Cze 2006    Temat postu:

Madras napisał:
Zamiast pisać wszędzie argument typu int lepiej zrobić typedef int TypKlucza i w odpowiednich miejscach zamienić int na TypKlucza, dzięki temu gdy będziesz chciał przejść na stringi, wystarczy zmienić tym klucza w jednym miejscu, zamiast latać po całym programie.

co to to fakt, ale i tak potem musze to przerobic na template'y :)

Madras napisał:
Poza tym w tym ten kod nie za bardzo jest OOP z jednej przyczyny - jak to stwierdził [link widoczny dla zalogowanych] - programowanie orientowane obiektowo zaczyna się wtedy, gdy świadomie korzystamy z funkcji wirtualnych ;). Póki co, jest to tylko programowanie obiektowe.

oj, zapomnialem definicji z wykladu :)

dzieki za info.
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Programowanie Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin