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

Obiekt, tabela czy struktura?

Object Storage Arubacloud
+2 głosów
1,290 wizyt
pytanie zadane 26 czerwca 2015 w C i C++ przez tarnasm Gaduła (3,030 p.)
Hej,

Chciałbym stworzyć program bazo danowy w konsoli w oparciu o programowanie obietkowe. Czy jeżeli pojedynczym elementem bazy np. telefon (model, producent, system operacyjny) będzie obiekt to mam go umieszczać w strukturze danych czy w tabeli? A może w ogóle inaczej byście to zrobili.

Pozdrawiam.

4 odpowiedzi

+2 głosów
odpowiedź 27 czerwca 2015 przez nowyfolder Mądrala (7,250 p.)

Proponuję utworzyć obiekt typu rekordowego, a jako tabelę bazy użyć tablicy a zmiennym rozmiarze - std::vector.
Oto przykład - odpuściłem sobie modyfikatory widoczności

class Telefon{

//pola

// jakies metody jeśli trzeba

}
class TabelaTelefon {
std::vector<Telefon*> table;

void add(Telefon*);

void remove(Telefon*);

//itd

}

 

+1 głos
odpowiedź 26 czerwca 2015 przez Adrian1999 Nałogowiec (34,570 p.)
to jest zwykła struktura która przechowuje tylko dane więc, według mnie stwórz po prostu jedną strukturę ,,przepis na szarlotkę" i twórz według wzoru :)
komentarz 26 czerwca 2015 przez tarnasm Gaduła (3,030 p.)
Ale to ma być obiektowo bo taki jest zamysł wykladowcy. Mam już napisany program w oparciu o strukturę danych. Po prostu nie rozumiem do końca definicji obiektu. Chodzi o to aby automatycznie był tworzony nowy obiekt. I nowy obiekt musi być gdzies gromadzony tak?
komentarz 26 czerwca 2015 przez Adrian1999 Nałogowiec (34,570 p.)
https://www.youtube.com/watch?v=aDXjubGK0jU polecam obejrzeć, po co tłumaczyć od nowa. Tylko nie zapomnij, klasa jest niemalże tymsamym co struktura, poszukaj różnicy w internecie, ale zapewne odnajdziesz i na tym forum. :)
komentarz 26 czerwca 2015 przez tarnasm Gaduła (3,030 p.)
Znam ten film na pamięć :D Ale on nie odpowiada na moje pytanie lub ja jej nie słyszę. czy obiekt ktory będzie tworzony za pomocą pętli czy też manualnie, musi być odrębnie alokowany w pamięci? Tak jak zapis kilku danych do konkretnej zmiennej.
komentarz 26 czerwca 2015 przez Dorion300 Szeryf (90,250 p.)
Obiekt to zmienna, zmienna to obiekt. Używaj tak samo jak że zmienna np. Int
komentarz 26 czerwca 2015 przez Adrian1999 Nałogowiec (34,570 p.)
Zapewne jeżeli chcesz kilka razy wprowadzić to musisz stworzyć pętle
+1 głos
odpowiedź 27 czerwca 2015 przez Pan Kulomb Pasjonat (18,630 p.)

Chodzi ci o to, że baza danych ma być dynamiczna? W takim razie zrobił bym klasę dla bazy danych, w której zmienną prywatną byłaby dynamiczna tablica telefonów

Telefon *dynamiczna_tablica; //to jako zmienna prywatna klasy
dynamiczna_tablica = new telefon[ilosc]; //to w jakiejś metodzie

Gdy chcesz zmienić rozmiar tablicy to np. tworzysz nową, kopiujesz elementy ze starej do nowej, usuwasz starą: 

delete[] dynamiczna_tablica;

Następnie przypisujesz nową do starej (w końcu to tylko wskaźnik). Mam nadzieję, że pomogłem :D

0 głosów
odpowiedź 27 czerwca 2015 przez niezalogowany

Wydaje mi się, że plączą Ci się pojęcia. Tworząc wzorzec "telefon" wybierasz między klasą a strukturą (alokacja na stosie vs alokacja na stercie). Struktura jest (mówiąc krótko) uproszczoną formą klasy. W przypadku tworzenia oprogramowania, które ma symulować zachowanie bazy danych IMHO lepszym wyborem jest struktura. Klasy nadają się do tworzenia obiektów o stosunkowo dłuższym czasie życia.

Mimo wszystko jeśli będziesz chciał to pogrupować (a będziesz chciał - wszak symulujesz bazę danych) to będzie musiał upchnąć to wszystko w jakimś konterze - i wtedy najprostszym rozwiązaniem okazuje się tablica.

Stąd też wynika, że najłatwiej rozwiązać Twój problem tworząc strukturę telefon:

struct telefon
{ 
     string model;
     string producent;
     string systemOperacyjny;
};

I grupujesz to sobie w tablicy:

telefon tablica[2];

tablica[0].model = "xxx";
tablica[0].producent = "yyy";
tablica[0].systemOperacyjny = "zzz";

tablica[1].model = "xxx";
tablica[1].producent = "yyy";
tablica[1].systemOperacyjny = "zzz";

Przepraszam, że tak niechlujnie tablicę zainicjalizowałem, ale nie programuję w Cpp - nie wiem jak to rozwiązać w krótszy sposób ;)

komentarz 27 czerwca 2015 przez nowyfolder Mądrala (7,250 p.)
Od kiedy klasy charaktyryzuje alokacja na stosie, a struktury alokacja na stercie? Od kiedy te rzeczy rożnią sie czymkolwiek innym, oprócz domyślnej widoczności elementów?

Podobne pytania

0 głosów
4 odpowiedzi 9,463 wizyt
pytanie zadane 12 września 2015 w Algorytmy przez WWOTEX Mądrala (6,200 p.)
0 głosów
0 odpowiedzi 176 wizyt
0 głosów
1 odpowiedź 1,409 wizyt
pytanie zadane 14 stycznia 2017 w C i C++ przez Kamyyylo Początkujący (460 p.)

92,634 zapytań

141,505 odpowiedzi

319,883 komentarzy

62,015 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!

...