Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Kapselung von Feldern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.01.2006, 13:39 Uhr
~Gast100
Gast


Wer kann mir bei folgender Aufgabe helfen ??

Gegeben ist ein Feld feld:

#define IFSIZE 10
int feld[IFSIZE];

Kapseln Sie dieses Feld durch die Bildung einer Klasse. Überlegen Sie sich ein Interface für
diese Klasse, über das Sie auf das Feld zugreifen können.

Danke schonmal
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.01.2006, 13:51 Uhr
Pler
Einer von Vielen
(Operator)


Mach ne klasse, in der einfach das feld als variabe (also als feld eben) ist. Dazu machst du ein paar funktionen:
- eingeben
- ausgeben
- liefere_wert( )
- ueberschreibe( )
....

Das ganze kann man dann noch mit dynamischer Speicherverwaltung ausbauen, aber ich denke, da bei dir die Größe durch ein define fest ist, spielt das keine rolle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.01.2006, 13:55 Uhr
~Gast100
Gast


Kannst Du mir mal ein Beispiel für eine solche Funktion, also bsp. eingeben() geben ??

Steh grad irgendwie aufm Schlauch...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.01.2006, 14:50 Uhr
Spacelord
Hoffnungsloser Fall


field.h

C++:
#ifndef __FIELD_H
#define __FIELD_H

template<typename T,int max_= 10>
class field
{
    private:
        T arr[max_];
    public:
        void setAt(const T& value,int index)
        {
            if(index>=0 && index < max_)
                arr[index]=value;
            else
                std::cout<<"Ungueltiger Index! "<<index<<std::endl;
        }

        T getAt(int index)const
        {
            if(index>=0 && index < max_)
                return arr[index];
            else
            {
                std::cout<<"Ungueltiger Index!\n"<<"Standardrueckgabewert 0!!"<<std::endl;
                return 0;//sehr sehr schwache Fehlerbehandlung!!
            }
        }
};

#endif



Damit kannst du nen Feld von einem beliebigen Typ anlegen mit "beliebiger" Größe anlegen.
z.B.

C++:
    field<int,5> intFeld;
    field<char> charFeld;



Die Behandlung des Fehlers(falscher Index) in getAt ist mehr als bescheiden.
Angemessener wäre es ne excetion zu werfen oder wer zuviel Zeit hat bastelt sich was dass dem Prinzip von eof im Standard entspricht,sodaß man nen eindeutigen Fehlerrückgabewert hat.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.01.2006, 15:02 Uhr
Pler
Einer von Vielen
(Operator)



C++:
#include <stdio.h>
#include <string.h>

class Cfeldverw
{
        private:
        int m_feld[10];

        public:
        void einlesen( void );
        void eingeben( int feld[] );
        void ausgeben( void );
};

void Cfeldverw::einlesen( void )
{
        int temp;
        int i;

        printf( "Zahl eingeben EOF fuer Abbruch:" );
        i = 0;
        while( scanf( "%d" , &m_feld[i] ) != EOF )
        {
                printf( "Noch eine:" );
                if( i == 9 )
                {
                        break;
                }
                i++;
        }
}

void Cfeldverw::eingeben( int feld[] )
{
        memcpy( m_feld , feld , sizeof( int ) * 10 );
}

void Cfeldverw::ausgeben( void )
{
        for( int i = 0 ; i < 10 ; i++ )
        {
                printf( "Index %d: %d" , i , m_feld[i] );
        }
}

int main( )
{
        int feld[10];
        Cfeldverw CFeld;

        for( int i = 0 ; i < 10 ; i++ )
        {
                feld[i] = i*i;}

        CFeld.eingeben( feld );
        CFeld.ausgeben( );

        CFeld.einlesen();
        CFeld.ausgeben();

        return 0;
}




Bearbeitung:

ohne Anspruch auf Vollständigkeit oder Richtigkeit oder ...


Dieser Post wurde am 15.01.2006 um 15:04 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: