Hej! En klass består av metoder och egenskaper, klasser är ungefär som datatyper med mycket funktionalitet skulle man kunna säga. Så du menar att klasser i C++ är samma sak som datatyperner till variablerna är i VB? Nä, jag menar att klasser är en behållare för kod som sedan kan användas på ett eller flera objekt. Klasser är den stora grunden i objektorienterade programspråk. VB, C++, Java och många flera språk är objektorienterade. Idag är de allra flesta språk objektorienterade. Åtminstone av de som används. man kan säga att en klass är en ritning. kan jag få en förklaring som visar 2 enkla likadana program. ett med klasser, och ett som utför samma sak fast utan klasser, som visar vitsen med klasser. > kan jag få en förklaring som visar 2 enkla likadana program. ett med klasser, och > Det finns ingenting funktionsmässigt som klasser tillför.Klasser?????
Jag är en mycket grön nybörjare i C++.
Det är bl a en sak som jag inte förstå hur mycket jag än försöker: Vad är en klass, vad används den till, vad är det för skilnad mellan klass och funktion?
Vore mkt tacksam vid ett svar.
MVH
Cerrolyn WedinSv: Klasser?????
Skillnaden enkel att beskriva genom att visa lite VB-kod:
<code>
'Skapa en instans av datatypen sträng
Dim s As String
'Skapa en instans av klassen ADODB.Recordset
Dim rs As New ADODB.Recordset
'Nu är s en sträng-variabel medan rs är ett objekt av typen ADODB.Recordset
's kan tilldelas strängar
s = "Schimpans"
'rs kan t.ex. användas till att hämta data från en XML-fil
'(genom ett nrop till metoden Open)
rs.Open "C:\MinXML.xml"
</code>[LÖST]Sv: Klasser?????
Sv: Klasser?????
Datatyper är inte klasser i VB, datatyper är inte heller klasser i C++, däremot är de datatyper som finns i .Net klasser. Skillnaden mellan en datatyp och en klass kan man förklara med att en datatyp är dum, den kan bara vara databärare och formatet på datat bestäms av typen. En klass är normalt sett lite intelligentare och har ofta måde funktioner och metoder för att manipulera informationen den innehåller.Sv: Klasser?????
Så vad är ett objekt. Ett objekt är vad som helst, det finns nästan inga gränser. Människor, djur, datorer, tangentbord osv.
Ett objekt har så kallade metoder. Metoder är kommandon till objektet. Ta t.ex. objektet människa. Jag kan kommendera en människa att gå, springa, äta. Eller objektet dator. Jag kan kommendera en dator att skriva text på skärmen, eller skriva ut något på skrivaren.
Ett objekt har också egenskaper. En människa har egenskaper som egensinnig, pratglad osv. Egenskaper kan också vara objekt. En människa består av olika objekt, hon kan också äga olika objekt. En dators egenskaper kan vara t.ex. vilken färg den har, eller vilken prestanda. Den kan också ha en hårddisk, en skärm, en mus osv.
Rent programmeringsmässigt är ett objekt en instans av en klass. t.ex. Hunden är ett objekt av klassen Djur. När man skriver en klass bestämmer man hur objekt som är av den klassen ska bete sig
En VB-programmerare borde inte ha några problem med att förstå klasser.
/JörgenSv: Klasser?????
Av ritningen skapas sedan objekt.
ritningen kan innehålla variabler och funktioner som kan påverka .
rSv: Klasser?????
*myror i huvet*Sv: Klasser?????
> ett som utför samma sak fast utan klasser, som visar vitsen med klasser.
Lite förenklat kan man säga att en klass är datatyp som kan innehålla funktioner. Det finns ingenting funktionsmässigt som klasser tillför. Allt du kan göra med klasser kan du också göra utan. Enda skillnaden är hur källkoden ser ut. Meningen med klasser är att göra källkoden enklare att förstå, använda och bygga ut.
* * *
typedef struct date
{
short y;
char m;
char d;
} datum;
unsigned short ymd2days(date datum)
{
}
/../
date datum1 = {2002, 12, 10};
date datum2 = {1998, 11, 11};
unsigned short antalDagar = ymd2days(datum1) - ymd2days(datum2);
/../
* * *
class date
{
public:
datum(short year, char month, char day) { y = year; m = month; d = day; }
unsigned short ymd2days();
private:
short y;
char m;
day m;
};
unsigned short date::ymd2days()
{
}
/../
date datum1 = date(2002, 12, 10);
date datum2 = date1998, 11, 11);
unsigned short antalDagar = datum1.ymd2days() - datum2.ymd2days());
/../Sv: Klasser?????
Du kan inte få polymorfism utan klasser.
I övrigt beror det helt på om vi pratar om C eller C++. Pratar vi om C finns inga klasser, och pratar vi om C++ finns det i princip bara en sak som skiljer klasser från structar. structs har allting public som default, medan klasser har det private.
/Niklas Jansson