Article View: be.comp.programming
Article #10973Re: oproep aan de programmeurs:wat moet ik kiezen ?
From: Sjoerd Schreuder
Date: Wed, 20 Feb 2002 02:26
Date: Wed, 20 Feb 2002 02:26
157 lines
6743 bytes
6743 bytes
Stef wrote:
>
> Serve La. wrote in message ...
> >"Sjoerd Schreuder" <sa_schreuder@wanadoo.nl> wrote in message
> >news:3C719B95.D71ECDD6@wanadoo.nl...
> >> > >zult een verstokte C programmeur (mij althans) eerst eens moeten uitleggen
> >> > >wat je nu precies bedoelt met de "abstracte functie foo()" en "de
> >> > >superklasse A" en wat je nu eigenlijk van de code verwacht.
> >> > >
> >> > Precies wat ik verwachtte, geen antwoord
> >>
> >> Als je hier vraagt wat "vermenigvuldigen" is, zul je waarschijnlijk
> >> ook geen antwoord krijgen, of hooguit het antwoord "ga nog eens
> >> terug naar school".
> >
> >Bedankt! Ik ga een beetje uitleggen wat dat betekent.
>
> Ik zou niet weten waarom niet. Je hoeft mij geen cursus OO te geven, die
> moet ik maar eens ergens gaan volgen. Vertel nou gewoon eens wat je nu
> eigenlijk van die code verwacht.
Dat die code de hele array doorloopt, en voor alle elementen in die
array de memberfunctie foo() aanroept. De elementen in de array
moeten van klasse B en C kunnen zijn. A is een superklasse van
zowel B als C.
> En moet je nu, na bijna twee weken geen antwoord geven, na aanmoediging van
> Sjoerd alsnog met zo'n reply komen? Was natuurlijk ook een beetje flauw van
> mij om je "zoals verwacht" taktiek na te apen.
>
> >Wel leuk om te zien dat er programmeurs zijn die nog nooit van OO concepten
> >gehoord hebben. Over in een grot wonen gesproken
> >
> Nooit van OO gehoord hebben is misschien wat overdreven, toepassen is een
> ander verhaal.
Als je niet weet wat een superklasse is, ben je nooit verder dan de
term 'OO' gekomen, maar weet je totaal niet wat het inhoudt.
> Ja, ik woon in de "embedded" grot. :-) Ik ben elektronisch ontwerper en moet
> daarnaast ook embedded software schrijven voor de processoren die ik
> gebruik. En dat gaat meestal gaat dat in C of assembly, C++ compilers zijn
> lang niet voor elke processor beschikbaar en vergeet Java maar helemaal.
C++ compilers zijn er voor net zoveel computers als C: er zijn
namelijk C++ compilers die C code als uitvoer genereren.
Dus als er een C compiler beschikbaar is voor je processor, dan
is het dus ook mogelijk om C++ code te compileren voor die processor.
> Er schijnt (IMHO) in deze NG bij de meerderheid de indruk te bestaan dat er
> alleen voor PC's software geschreven wordt en dan nog grotendeels onder
> windows ook. Bedenk ook eens dat er in je auto, video, vaatwasser, magnetron
> etc. ook software zit.
Ik ben me daar zeker wel van bewust, en Serve volgens mij ook.
> Om nog even op je orginele vraag terug te komen:
> | Geef mij eens voorbeeldcode waar je een array doorloopt en telkens de
> | abstracte functie foo() aanroept in C en in VB. De superklasse moet A
> | heten met twee subklassen B en C.
>
> Je stelt hem zo ongeveer in C++ en vraagt dan om dit in C of VB te doen.
Wat is er C++ aan de vraag? Het woord "array", "abstract", "functie",
"superklasse" of "subklasse"? Dat zijn allemaal algemeen aanvaarde
begrippen binnen de OO wereld.
> Wie
> verwacht jij dan dat er antwoord? Een C/C++ of VB/C++ programmeur? Nee, die
> gaat natuurlijk geen C of VB schrijven als er zo ongeveer om C++ gevraagd
> wordt. Een C of VB programmeur? Nee, die kan de vraag niet lezen zonder
> zich eerst in C++ en OO te verdiepen. Daarnaast lijkt het mij (met mijn
> nihile OO kennis) dat je vraag nogal incompleet was. Is het dan niet
> handiger om kort uit te leggen wat de bedoeling is?
De vraag is hartstikke compleet. En inderdaad: je moet OO kennis
hebben om hem te beantwoorden. Laten we daarom eens kijken waarom
Serve die vraag stelde. Hij reageerde op de volgende bewering van
Jasper Simmer:
* En op laag niveau kun je in VB net zo goed OO programmeren als
* in JAVA of C.
Serve (en ik ook) was het niet met die bewering eens, en vroeg
om feiten voor die bewering door te vragen naar C of VB code
voor een simpele OO opdracht.
Dus eigenlijk wachten we nog steeds op Jasper Simmer, die eerst
een zeer vergaande uitspraak doet en vervolgens nooit meer
wat van zich laat horen als we hem vragen die bewering waar
te maken.
Zeker als het gaat om advies aan beginners, kun je onterechte
claims niet onbestreden laten. En dat is wat hier gebeurde:
een beginner vraagt advies, iemand geeft een totaal ongefundeerd
antwoord, en wordt vervolgens teruggefloten. Dat jij je daarna
aangevallen voelt, tja....
[knip: C code die totaal geen antwoord op de vraag is]
> Of was dit niet wat je bedoelde? Leg dan even uit wat je nog mist in deze
> code. Of geef de code eens in C++, dat zal het ook wel wat duidelijker
> maken.
#include <iostream>
class A
{
public:
virtual void foo() = 0;
virtual ~A() {}
};
class B : public A
{
public:
virtual void foo() { std::cout << "B"; }
};
class C : public A
{
public:
virtual void foo() { std::cout << "C"; }
};
void vul(A* arr[], int size)
{
for(int i=0; i < size; ++i)
{
if ((i%2) == 0) /* of een ander algorithme om tussen B en C te kiezen */
arr[i] = new B;
else
arr[i] = new C;
}
}
int main()
{
const int size = 10;
A* array[size];
vul(array, size);
for(int i=0; i < size; ++i)
{
array[i]->foo();
}
std::cout << std::endl;
return 0; /* over geheugenlekken doen we hier niet moeilijk */
}
Verwachte output:
BCBCBCBCBC
Of afhankelijk van je vulalgorithme elke andere volgorde van B's en C's.
Succes met je implementatie in C!
Sjoerd Schreuder
Technical Details
Message-ID:
<3C730AE7.40FF0F97@wanadoo.nl>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news-x2.support.nl!cleanfeed.casema.net!leda.casema.net!pollux.casema.net.POSTED!not-for-mailReferences:
<u73386lnkohv99@corp.supernews.com> <3C719B95.D71ECDD6@wanadoo.nl> <Smxc8.37840$ql6.3047594@zwoll1.home.nl> <u75ojgssgql9b3@corp.supernews.com>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: 107324,65d4c4d6a1e8dc39 X-Google-Attributes: gid107324,public X-Google-Thread: fcea4,65d4c4d6a1e8dc39 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2002-02-19 18:30:34 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news-x2.support.nl!cleanfeed.casema.net!leda.casema.net!pollux.casema.net.POSTED!not-for-mail Message-ID: <3C730AE7.40FF0F97@wanadoo.nl> From: Sjoerd Schreuder <sa_schreuder@wanadoo.nl> X-Mailer: Mozilla 4.7 [en] (Win98; I) X-Accept-Language: en MIME-Version: 1.0 Newsgroups: be.comp.programming,nl.comp.programmeren Subject: Re: oproep aan de programmeurs:wat moet ik kiezen ? References: <u73386lnkohv99@corp.supernews.com> <3C719B95.D71ECDD6@wanadoo.nl> <Smxc8.37840$ql6.3047594@zwoll1.home.nl> <u75ojgssgql9b3@corp.supernews.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 157 Date: Wed, 20 Feb 2002 02:26:15 GMT NNTP-Posting-Host: 194.134.87.209 X-Trace: pollux.casema.net 1014171975 194.134.87.209 (Wed, 20 Feb 2002 03:26:15 MET) NNTP-Posting-Date: Wed, 20 Feb 2002 03:26:15 MET Organization: EuroNet Internet