c++: wat is een abstract data type?

Pagina: 1
Acties:
  • 168 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • porn*
  • Registratie: Januari 2001
  • Laatst online: 10-09 15:34

porn*

...take on the world!

Topicstarter
Kreeg net die vraag naar me toegesmeten en kan geen duidelijke uitleg op het net vinden :(

Btw: staat ook niet in de search :P

Bnet pindle#2913


Acties:
  • 0 Henk 'm!

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:44

Bergen

Spellingscontroleur

Hmm misschien hetzelfde als wat het is in Java? Daar is het een type waarvan je geen variable kan declareren. Alleen van een subtype (of subklasse) kun je een variabele declareren. (Godallemachtig hoe leg je dat uit, khoop dat het duidelijk is)

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:23
dat is het.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Rene59
  • Registratie: April 2000
  • Laatst online: 07-07-2024
Erg dom van je porn ;)

Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

een adt in c++ is een soort struct als in c
maar je mag de elementen niet direct aanspreken zoals bij een struct maar dit dient via functies die in de adt gedeclareerd zijn te gebeuren

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:23
Op zondag 17 juni 2001 22:09 schreef D2k het volgende:
een adt in c++ is een soort struct als in c
maar je mag de elementen niet direct aanspreken zoals bij een struct maar dit dient via functies die in de adt gedeclareerd zijn te gebeuren
Huh? Jij hebt het hier over een 'class'. Dat kan je natuurlijk ook als een abstract data type beschouwen, maar ik denk dat porn hier eigenlijk wou zeggen wat is een 'abstracte class'. En dat is een class waarvan je geen instances kunt definieren. je moet eerst een class afleiden van die AC en daarvan dan variablen van declareren.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • porn*
  • Registratie: Januari 2001
  • Laatst online: 10-09 15:34

porn*

...take on the world!

Topicstarter
Aha je hebt dus een soort 'blueprint' van een klasse, die je daarna moet definieren alvorens hem te gebruiken?

Wat is daar dan precies het nut van? Als ik alleen die klasse definieer kan ik hem direct gebruiken, waar is dan de 'blueprint' voor nodig?

Edit:
Erg dom van je porn
Hou je mond aap :)
Alsof jij het me kan vertellen HAHA!

Bnet pindle#2913


Acties:
  • 0 Henk 'm!

  • Reefer
  • Registratie: Mei 2000
  • Laatst online: 21-02 01:41

Reefer

madness

dan kun je bepaalde dingen makkelijker doen met die classes met instanceof enzo(in java ieg)

A Breakbeat A Day Keeps Religion Away.


Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

posting van D2k en Rob de tuinman samen(beiden een 9 voor hun tentamen C++)

Een ADT (Abstract Data Type) is een zelf gedefinieerd datatype. Als de specificatie van het ADT bekend is kun je dit type op dezelfde wijze gebruiken als de ingebouwde typen van C++ (zoals char, int en double).
Een adt koppelt een bepaalde datastructuur (interne variabelen) met de bij deze datasctructuur behorende bewerkingen(functies).

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • TlighT
  • Registratie: Mei 2000
  • Laatst online: 28-05 10:31
Een ADT is een conceptueel datatype waarop bepaalde operaties uitgevoerd worden zonder dat het data-type gedefineerd is.

In C++ kunnen ADT's geimplementeerd worden dmv templates. Het standaard voorbeeld is een swap functie:
code:
1
2
3
4
5
void swap(int &a, int &b) {
  int tmp = b;
  b = a;
  a = tmp;
}

Bovenstaande is een specifieke implementatie van een swap functie, die alleen met integers werkt. Als je nu bijv. ook een swap functie voor longs, doubles, floats etc. wil maken moet je voor elk type een aparte functie schrijven.

Met templates is dit niet meer nodig. Bijv:
code:
1
2
3
4
5
6
7
template <class swapT>
void swap(swapT a, swapT b)
{
  swapT tmp = b;
  b = a;
  a = tmp;
}

Dit abstracte template werkt nu met elk datatype:

int a = 1; int b = 2; swap(a,b);
float c = 0.5; float d = 0.7; swap(c,d);

etc.

Acties:
  • 0 Henk 'm!

  • darthdrinker
  • Registratie: November 1999
  • Laatst online: 24-07 10:25

darthdrinker

HELP!

Hmm voorbeeldje dan ook maar erbij?

Stel je maakt een tekenprogje.
Je maakt dan een ADT figuur met een functie <Draw>.
Deze functie weet nog niet hoe hij zichzelf moet tekenen immers hij weet nog niet WAT voor figuur hij is. Je weet echter op moment dat je figuur tekend al wel dat alle figuren zichzelf MOETEN kunnen tekenen en dus ook een <Draw> functie MOETEN implementeren.
Door nu dus de klasse cirkel te laten erfen van de ADT figuur dwing je hem om een <Draw> functie te maken.

In dit voorbeeld is het natuurlijk vrij duidelijk dat ieder figuur een <Draw> functie moet hebben. maar het is maar een voorbeeld.

khoop dat ik weer niet eens uit mijn nek heb lopen brallen en dat je er wat aan hebt. :)

Iemand doodmaken met een blije mus.....


Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

Op zondag 17 juni 2001 22:49 schreef darthdrinker het volgende:
<knip met schaar>
daar ben ik het niet helemaal mee een. in een adt _kan_ je templates gebruiken
maar een adt hoeft geen template te hebben

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 03-08 05:41
Op zondag 17 juni 2001 22:47 schreef TlighT het volgende:

[..]

Dit abstracte template werkt nu met elk datatype:

[..]
Dus ook met een abstract datatype!

Overigens vind ik 'abstracte template' geen goede benaming. Het is gewoon een template..

Acties:
  • 0 Henk 'm!

  • TlighT
  • Registratie: Mei 2000
  • Laatst online: 28-05 10:31
Op zondag 17 juni 2001 22:55 schreef D2k het volgende:

[..]

daar ben ik het niet helemaal mee een. in een adt _kan_ je templates gebruiken
maar een adt hoeft geen template te hebben
Dat zei'k toch?
Op zondag 17 juni 2001 22:47 schreef TlighT het volgende:

In C++ kunnen ADT's geimplementeerd worden dmv templates.
Ok, niet duidelijk genoeg kennelijk...

Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

Op zondag 17 juni 2001 22:59 schreef TlighT het volgende:

[..]

Dat zei'k toch?
[..]
zoals jij het bracht werd het er niet duidelijker op iig :)

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • porn*
  • Registratie: Januari 2001
  • Laatst online: 10-09 15:34

porn*

...take on the world!

Topicstarter
Aha ik begrijp het... Het is een handige manier om dit soort dingen te programmeren, maar wordt zoiets in de praktijk ook vaak toegepast?

Ik bedoel: voor die swapfunctie is het inderdaad handiger dan voor alle verschillende typen een andere klasse te maken, maar ook dat is niet moeilijk: daar is copy-paste voor :)
Wordt het in de praktijk ook veel toegepast?

Bnet pindle#2913


Acties:
  • 0 Henk 'm!

  • darthdrinker
  • Registratie: November 1999
  • Laatst online: 24-07 10:25

darthdrinker

HELP!

je kunt in mijn geval een array van figuren aanmaken. Vervolgens gooi je daar allemaal verschillende soorten figuren in.
Je kan dan voor al deze figuren draw annroepen zonder dat je hoeft te weten wat voor soort figuur het is.

Iemand doodmaken met een blije mus.....


Acties:
  • 0 Henk 'm!

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 03-08 05:41
Op zondag 17 juni 2001 23:04 schreef porn het volgende:
Ik bedoel: voor die swapfunctie is het inderdaad handiger dan voor alle verschillende typen een andere klasse te maken, maar ook dat is niet moeilijk: daar is copy-paste voor :)
Wordt het in de praktijk ook veel toegepast?
Ja, want als het programma uitgebreid wordt met een nieuw datatype bijvoorbeeld, waarop ook die swap-functie word aangeroepen, dan hoef jij niet te copy-pasten. Dat doet de compiler. Gemak dient de mens... :)
Maar dit gaat meer over een template dan over een ADT.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:23
Op zondag 17 juni 2001 23:10 schreef RdeTuinman het volgende:

[..]

Ja, want als het programma uitgebreid wordt met een nieuw datatype bijvoorbeeld, waarop ook die swap-functie word aangeroepen, dan hoef jij niet te copy-pasten. Dat doet de compiler. Gemak dient de mens... :)
Maar dit gaat meer over een template dan over een ADT.
Of als je iets wilt wijzigen in die functie hoef je maar 1 functie te wijzigen.
Templates kan je trouwens ook voor klasses gebruiken.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • drZymo
  • Registratie: Augustus 2000
  • Laatst online: 27-06 21:47
Abstracte Data Types zijn type definities waarvan de waarden uitsluitend gemanipuleerd mogen worden door middel van een vast collectie bijgeleverde procedures.

Een voorbeeld hiervan is bijvoorbeeld een Vector. Deze kunnen in de wiskunde opgeteld en afgetroken worden enzo. Om dit te regelen in een programmeertaal kan je een abstract data type introduceren. Deze bevat bijv twee elementen, de hoek en de lengte. Deze kan je alleen aan de buitenkant niet zien. Wat je wel kan is die 2 vector types optellen met bijv een apparte fuctie Add() die dan de mbv de hoek en graden de uitkomst uitrekent.

Je kan het voorstellen als een soort van abstractie laag over gegevens. De echte uitvoering wordt verborgen onder een laag waar mee makelijker te werken is.

Ik hoop dat het zo duidelijk is.

Ooh ja, bron: school :)

"There are three stages in scientific discovery: first, people deny that it is true; then they deny that it is important; finally they credit the wrong person."


Acties:
  • 0 Henk 'm!

Verwijderd

Hier de definitie zoals ik hem ken:
An abstract data type (ADT) is characterized by the following properties:

1. It exports a type.
2. It exports a set of operations. This set is called interface.
3. Operations of the interface are the one and only access mechanism to the type's data structure.
4. Axioms and preconditions define the application domain of the type.
Grofgezegd is een "fully encapsulated" class dus een ADT; data in zo'n class mag alleen dmv. methodes van die class (het interface) benaderd worden.

Acties:
  • 0 Henk 'm!

  • bloody
  • Registratie: Juni 1999
  • Laatst online: 11-09 21:12

bloody

0.000 KB!!

Op zondag 17 juni 2001 22:36 schreef D2k het volgende:
posting van D2k en Rob de tuinman samen(beiden een 9 voor hun tentamen C++)
wow. wat GOED van jullie :'( ;(

nope


Acties:
  • 0 Henk 'm!

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op maandag 18 juni 2001 19:34 schreef mietje het volgende:
Grofgezegd is een "fully encapsulated" class dus een ADT; data in zo'n class mag alleen dmv. methodes van die class (het interface) benaderd worden.
Volgens mij klopt dit totaal niet: een abstracte class is simpelweg een klasse met viruele lidfuncties, dus functies die zijn gedeclareerd, maar nog niet gedefinieerd. Een ADT kan dus niet gebruikt worden.

Een ADT specificeert welke functies door afgeleide klassen geimplementeert moeten worden, zodat verschillende klassen met dezelfde 'ouder' op gelijke wijze behaldeld kunnen worden (zoals darthdrinker uitlegt in zijn voorbeeld.)

Om het nog duidelijker te maken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class CFiguur
{
...
public:
  virtual void Draw() = 0;
...
};

class CVierkant: public CFiguur
{
...
public:
  void Draw();
...
}

class CRondje: public CFiguur
{
...
public:
  void Draw();
...
}

void CVierkant::Draw()
{
  // teken het vierkant
}

void CRondje::Draw()
{
  // teken het rondje
}

CFiguur *figuren[100];

...

figuren[0] = new CVierkant();
figuren[1] = new CRondje();

figuren[0]->Draw();  // de verschillende klassen kunnen op
figuren[1]->Draw();  // dezelfde manier benaderd worden

Acties:
  • 0 Henk 'm!

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 03-08 05:41
Op maandag 18 juni 2001 20:11 schreef bloody het volgende:

wow. wat GOED van jullie :'( ;(
Vonden we zelf ook wel ja. 't Is maar ff dat je het weet. *D

Acties:
  • 0 Henk 'm!

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op maandag 18 juni 2001 21:53 schreef RdeTuinman het volgende:

[..]

Vonden we zelf ook wel ja. 't Is maar ff dat je het weet. *D
Ondanks die 9 geven jullie niet echt een goede definitie:
Een ADT (Abstract Data Type) is een zelf gedefinieerd datatype. Als de specificatie van het ADT bekend is kun je dit type op dezelfde wijze gebruiken als de ingebouwde typen van C++ (zoals char, int en double).
Een adt koppelt een bepaalde datastructuur (interne variabelen) met de bij deze datasctructuur behorende bewerkingen(functies).

Acties:
  • 0 Henk 'm!

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 03-08 05:41
Op maandag 18 juni 2001 21:58 schreef marcusk het volgende:

Ondanks die 9 geven jullie niet echt een goede definitie:
OK, jij zegt het. Gelukkig werd het ook niet gevraagd op het tentamen. :9

Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

Op maandag 18 juni 2001 20:11 schreef bloody het volgende:

[..]

wow. wat GOED van jullie :'( ;(
wel hè? 8-)

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

Op maandag 18 juni 2001 21:58 schreef marcusk het volgende:

[..]

Ondanks die 9 geven jullie niet echt een goede definitie:
[..]
geef eens een betere dan :Y)

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op maandag 18 juni 2001 22:55 schreef D2k het volgende:

[..]

geef eens een betere dan :Y)
Heb ik toch al gedaan : :)
een abstracte class is simpelweg een klasse met viruele lidfuncties, dus functies die zijn gedeclareerd, maar nog niet gedefinieerd.

Acties:
  • 0 Henk 'm!

Verwijderd

Op maandag 18 juni 2001 21:09 schreef marcusk het volgende:
Volgens mij klopt dit totaal niet: een abstracte class is simpelweg een klasse met viruele lidfuncties, dus functies die zijn gedeclareerd, maar nog niet gedefinieerd. Een ADT kan dus niet gebruikt worden.
Geloof me dat het wel klopt. Wat jij beschrijft is een (pure) virtual base class. ADTs hebben niets met inheritance te maken. Een ADT is gewoon een encapsulated datatype, een VBC specificeert een virtueel interface.

Acties:
  • 0 Henk 'm!

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op maandag 18 juni 2001 23:18 schreef mietje het volgende:
Geloof me dat het wel klopt.
Ik geloof het niet >:)

Aangezien het hier om een definitie gaat en er dus niet zo veel te discussieren valt heb ik het maar ff ingetypt in av. Het eerste wat ik tegenkwam was dit:
abstract class
A class that cannot have instances. Abstract classes are helpful in designing a class hierarchy, to contain the common parts of several concrete classes.
(http://www.sics.se/isl/quintus/objects/glossary.html)

Acties:
  • 0 Henk 'm!

Verwijderd

marcusk>> een abstract class is niet het zelfde als een abstract datatype! Juist om deze verwarring te voorkomen noemt men in C++ een abstract class een pure virtual base class.

Zie deze link voor letterlijk mijn definitie van een ADT: http://www.zib.de/Visual/people/mueller/Course/Tutorial/node4.html

Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 06-09 02:30

dusty

Celebrate Life!

Op maandag 18 juni 2001 19:19 schreef drZymo het volgende:
Abstracte Data Types zijn type definities waarvan de waarden uitsluitend gemanipuleerd mogen worden door middel van een vast collectie bijgeleverde procedures.[blablabla]
Eindelijk, Jij was volgens mij de eerste correcte en volledige beschrijving van een abstract datatype.

Simplistisch:
Het idee achter een abstract datatype is dat je niet weet HOE de datatype zelf intern is opgebouwd (dat is immers het abstracte), Je kan het alleen aanspreken via de "functies" die worden geleverd.

Als je bijvoorbeeld een abstracte datatype QUEUE hebt. Maakt het jou niet uit HOE de queue wordt opgeslagen. Zolang je het maar kunt gebruiken. Of het datatype nou werkelijk een linked list, double linked list of een simpele array is maakt voor het gebruik niet uit en is daarom ook niet belangrijk.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op maandag 18 juni 2001 23:31 schreef mietje het volgende:
marcusk>> een abstract class is niet het zelfde als een abstract datatype! Juist om deze verwarring te voorkomen noemt men in C++ een abstract class een pure virtual base class.

Zie deze link voor letterlijk mijn definitie van een ADT: http://www.zib.de/Visual/people/mueller/Course/Tutorial/node4.html
Hmm... het lijkt erop dat je toch gelijk hebt :) Waarom lijken die namen ook zo op elkaar :) Nouja, weer iets bijgeleerd :D

Acties:
  • 0 Henk 'm!

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op maandag 18 juni 2001 23:44 schreef dusty het volgende:

[..]

Eindelijk, Jij was volgens mij de eerste correcte en volledige beschrijving van een abstract datatype.

Simplistisch:
Het idee achter een abstract datatype is dat je niet weet HOE de datatype zelf intern is opgebouwd (dat is immers het abstracte), Je kan het alleen aanspreken via de "functies" die worden geleverd.

Als je bijvoorbeeld een abstracte datatype QUEUE hebt. Maakt het jou niet uit HOE de queue wordt opgeslagen. Zolang je het maar kunt gebruiken. Of het datatype nou werkelijk een linked list, double linked list of een simpele array is maakt voor het gebruik niet uit en is daarom ook niet belangrijk.
Dit kende ik als het 'black box' principe.

Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 06-09 02:30

dusty

Celebrate Life!

Op maandag 18 juni 2001 23:50 schreef marcusk het volgende:
Dit kende ik als het 'black box' principe.
"Black Box" principe wordt in principe alleen gebruikt bij het testen van routines.

Je krijgt de parameters, de pre en post condities en vandaaruit ga je kijken of een functie doet wat het hoort te doen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11-09 12:01
Het is me niet geheel duidelijk....

- Wat is _exact_ de betekenis van 'abstract' hier?

Eem int is een concreet datatype, toch?

- Is een array van int's een abtract datatype?
- Is een struct met daarin wat int's een abstract datatype?
- Is een class met daarin wat int's, zonder memberfuncties een abstract datatype?


Mijn conclusie: Alle datatypes die niet ingebouwd zijn in de taal, zijn abstracte datatypes. Dus _alle_ user defined datatypes, ook die zonder 'bijbehorende' functies.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

Verwijderd

farlane>> al die voorbeelden zijn geen abstracte datatypes. Je mag geen toegang hebben tot de primitieven (int en zo) die het ADT implementeren.

Een voorbeeldje: we hebben een class Coordinaat die er zo uit ziet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Coordinaat {
public:    // foute boel, moet private
  double a, b;

public:
  void verplaats_cartesisch(double x, double y);
  void verplaats_polair(double afstand, double hoek);

  double x() const;
  double y() const;

  double afstand() const;
  double hoek() const;

  // en nog een heleboel methods...
};

Die primitieven a en b zijn nu zichtbaar voor de gebruiker van de class. Hij kan a en b rechtstreeks lezen en schrijven, maar wat leest/schrijft hij dan, cartesische of pool coordinaten? Hoe heeft die vorige programmeur de class geimplementeerd, en zal dat in de toekomst zo blijven?

Als we de primitieven private maken zijn ze onzichtbaar voor de gebruiker van de class, hij kan enkel de methods gebruiken en hoeft zich niet druk te maken of Coordinaat cartesisch dan wel polair geimplementeerd is. Hij zal z'n code ook niet hoeven wijzigen als dat ooit verandert, simpelweg recompilen is voldoende.

Daarom moet dus in een ADT alle data encapsulated zijn. Abstract slaat dus op het feit dat je als gebruiker de implementatie van de classes niet boeit, je gebruikt simpelweg de eenduidige methods die je verstrekt zijn.

<edit>zin liep niet</edit>

Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 06-09 02:30

dusty

Celebrate Life!

Op dinsdag 19 juni 2001 01:02 schreef farlane het volgende:
Het is me niet geheel duidelijk....

- Wat is _exact_ de betekenis van 'abstract' hier?

Eem int is een concreet datatype, toch?

- Is een array van int's een abtract datatype?
- Is een struct met daarin wat int's een abstract datatype?
- Is een class met daarin wat int's, zonder memberfuncties een abstract datatype?


Mijn conclusie: Alle datatypes die niet ingebouwd zijn in de taal, zijn abstracte datatypes. Dus _alle_ user defined datatypes, ook die zonder 'bijbehorende' functies.
Abstract betekent hier dat je de opbouw van de datatype NIET weet. Je weet alleen de methodes die je kan gebruiken om waarden in de datatype te krijgen.

Zoals in mijn voorbeeld als je een ADT queue hebt kan je methoden :
Voegtoeaanqueue(waarde),
Haaluitqueue(waarde)

hebben. Hoe die queue intern werkt weet je niet omdat dat "afgeschermd" is. Wilt de programmeur van de ADT het op een andere methode oplossen dan kan hij dat gewoon doen door de ADT te herschrijven zolang hij de pre/post condities van de methoden hetzelfde laat is er voor het programma niets aan de hand, Hercompileren en het zou gewoon moeten werken.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 06-09 02:30

dusty

Celebrate Life!

Op dinsdag 19 juni 2001 02:11 schreef mietje het volgende:
Als we de primitieven private maken zijn ze onzichtbaar voor de gebruiker van de class, hij kan enkel de methods gebruiken en hoeft zich niet druk te maken of Coordinaat cartesisch dan wel polair geimplementeerd is. Hij zal z'n code ook niet hoeven wijzigen als dat ooit verandert, simpelweg recompilen is voldoende.
Zolang de programmeur de pre-/post condities hetzelfde laat natuurlijk. (toch wel redelijk belangrijk om dat OOK te vermelden.)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • drZymo
  • Registratie: Augustus 2000
  • Laatst online: 27-06 21:47
Op maandag 18 juni 2001 23:44 schreef dusty het volgende:

[..]

Eindelijk, Jij was volgens mij de eerste correcte en volledige beschrijving van een abstract datatype.

Simplistisch:
Het idee achter een abstract datatype is dat je niet weet HOE de datatype zelf intern is opgebouwd (dat is immers het abstracte), Je kan het alleen aanspreken via de "functies" die worden geleverd.

Als je bijvoorbeeld een abstracte datatype QUEUE hebt. Maakt het jou niet uit HOE de queue wordt opgeslagen. Zolang je het maar kunt gebruiken. Of het datatype nou werkelijk een linked list, double linked list of een simpele array is maakt voor het gebruik niet uit en is daarom ook niet belangrijk.
Zoals ik dus allang heb proberen uit te leggen.

"There are three stages in scientific discovery: first, people deny that it is true; then they deny that it is important; finally they credit the wrong person."


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 06-09 02:30

dusty

Celebrate Life!

Op dinsdag 19 juni 2001 10:20 schreef drZymo het volgende:
Zoals ik dus allang heb proberen uit te leggen.
En daarom dacht ik van: laat ik het eens zo simpel mogelijk beschrijven, misschien lukt het dan wel :)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • porn*
  • Registratie: Januari 2001
  • Laatst online: 10-09 15:34

porn*

...take on the world!

Topicstarter
Dusty: jij zit het dichtst in de buurt. Heb het nog even nagezocht in de bibliotheek in verschillende boeken en jouw omschrijving zit het dichtst in de buurt van zoals het daar ook in stond.

Niet dat de rest per sé fout is: er bestaat veel verwarring op dat gebied, maar Dusty's omschrijving klopt zo ongeveer wel.

Bnet pindle#2913


Acties:
  • 0 Henk 'm!

Verwijderd

Well d'oh! :)

Geef je de exacte, formele definitie van een ADT, "zit de omschrijving van dusty meer in de buurt"...

Some people are right, even when they're wrong. ;)
Pagina: 1