Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C++ klasse en object met voorbeeld

Wat is een klas?

Een C++-klasse combineert gegevens en methoden voor het manipuleren van de gegevens in één. Klassen bepalen ook de vormen van objecten. De gegevens en methoden in een klasse staan ​​bekend als klasseleden. Een klasse is een door de gebruiker gedefinieerd gegevenstype. Om toegang te krijgen tot de klasleden, gebruiken we een instantie van de klas. Je kunt een klasse zien als een blauwdruk voor een object.

Een klasse is een prototype voor een huis. Het toont de locatie en afmetingen van deuren, ramen, vloeren, enz. Uit deze beschrijvingen kunnen we een huis bouwen. Het huis wordt het object. Het is mogelijk om van het prototype veel huizen te maken. Het is ook mogelijk om veel objecten van een klasse te maken.

In de bovenstaande afbeelding hebben we een prototype van een enkel huis. Van dit prototype hebben we twee huizen met verschillende kenmerken gemaakt.

In deze tutorial leer je:

  • Wat is een klasse?
  • Klasvoorbeeld
  • Privé en openbare zoekwoorden
  • Objectdefinitie
  • Toegang tot gegevensleden
  • Functies voor klassenleden
  • Constructors en Destructors

Klasseverklaring

In C+ wordt een klasse gedefinieerd met behulp van het class-sleutelwoord. Dit moet worden gevolgd door de klassenaam. De class body wordt dan tussen accolades { } toegevoegd.

Syntaxis:

class class-name
   {
   // data
   // functions
   };
  • De klasnaam is de naam die aan de klas moet worden toegewezen.
  • De gegevens zijn de gegevens voor de klasse, normaal gedeclareerd als variabelen.
  • De functies zijn de klassenfuncties.

Privé en openbare zoekwoorden

U moet deze twee zoekwoorden zijn tegengekomen. Het zijn toegangsmodificaties.

  • Privé:

Wanneer het sleutelwoord private wordt gebruikt om een ​​functie of klasse te definiëren, wordt het privé. Deze zijn alleen toegankelijk vanuit de klas.

  • Openbaar:

Het publieke trefwoord daarentegen maakt gegevens/functies openbaar. Deze zijn toegankelijk van buiten de klas.

Objectdefinitie

Objecten worden gemaakt op basis van klassen. Klasse-objecten worden op dezelfde manier gedeclareerd als variabelen. De klassenaam moet beginnen, gevolgd door de objectnaam. Het object van het klassetype.

Syntaxis:

class-name object-name;
  • De klassenaam is de naam van de klasse waaruit een object moet worden gemaakt.
  • De objectnaam is de naam die aan het nieuwe object moet worden toegewezen.

Dit proces van het maken van een object uit een klasse staat bekend als instantiatie.

Toegang tot gegevensleden

Om toegang te krijgen tot openbare leden van een klasse, gebruiken we de (.) punt-operator. Dit zijn leden die zijn gemarkeerd met een modifier voor openbare toegang.

Voorbeeld 1:

#include <iostream>
using namespace std;
class Phone {
public:
	double cost;   
	int slots; 
};
int main() {
	Phone Y6;        
	Phone Y7;        

	Y6.cost = 100.0;
	Y6.slots = 2;

	Y7.cost = 200.0;
	Y7.slots = 2;
	cout << "Cost of Huawei Y6 : " << Y6.cost << endl;
	cout << "Cost of Huawei Y7 : " << Y7.cost << endl;

	cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl;
	cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl;

	return 0;
}

Uitvoer:

Hier is een screenshot van de code:

Code Uitleg :

  1. Neem het iostream-headerbestand op in onze code om de functies ervan te gebruiken.
  2. De std-naamruimte in onze code opnemen om de klassen te gebruiken zonder deze aan te roepen.
  3. Declareer een klas met de naam Telefoon.
  4. De modifier voor openbare toegang gebruiken om de variabelen die we gaan maken als openbaar toegankelijk te markeren.
  5. Declareer de variabele kosten van een dubbel gegevenstype.
  6. Declareer een integer-variabele met de naam slots.
  7. Einde van de les.
  8. De main()functie aanroepen. De programmalogica moet in de body worden toegevoegd.
  9. Maak een object met de naam Y6 van het type Phone. Dit wordt instantiatie genoemd.
  10. Maak een object met de naam Y7 van het type Telefoon. Dit wordt instantiatie genoemd.
  11. Toegang tot de variabele/ledenkosten van klasse Telefoon met het object Y6. De waarde is ingesteld op 100,0. De kosten van Y6 zijn nu ingesteld op 100,0.
  12. Krijg toegang tot de variabele/ledenslots van klasse Phone met behulp van het object Y6. De waarde is ingesteld op 2. De slots voor Y6 zijn nu ingesteld op 2.
  13. Toegang tot de variabele/ledenkosten van klasse Telefoon met het object Y7. De waarde is ingesteld op 200,0. De kosten van Y7 zijn nu ingesteld op 200,0.
  14. Toegang tot de variabele/ledenslots van de klasse Phone met behulp van het object Y7. De waarde is ingesteld op 2. De slots voor Y7 zijn nu ingesteld op 2.
  15. Druk de kosten van Y6 af op de console naast andere tekst.
  16. Druk de kosten van Y7 af op de console naast andere tekst.
  17. Druk het aantal slots voor Y6 af naast andere tekst.
  18. Druk het aantal slots voor Y7 af naast andere tekst.
  19. Het programma moet een waarde retourneren na succesvolle voltooiing.
  20. Einde van de hoofdtekst van de functie main().

Wat is een privéles?

Klasleden die als privé zijn gemarkeerd, zijn alleen toegankelijk via functies die binnen de klas zijn gedefinieerd. Elk object of elke functie die buiten de klasse is gedefinieerd, heeft geen directe toegang tot dergelijke leden. Een lid van een privéles is alleen toegankelijk via leden- en vriendenfuncties.

Wat is een beschermde klasse?

Klasleden die als beschermd zijn gemarkeerd, hebben een voordeel ten opzichte van degenen die als privé zijn gemarkeerd. Ze zijn toegankelijk via functies binnen de klasse van hun definitie. Bovendien zijn ze toegankelijk vanuit afgeleide klassen.

Voorbeeld 2:

#include <iostream>
using namespace std;
class ClassA {
public:
	void set_a(int val);
	int get_a(void);

private:
	int a;
};
int ClassA::get_a(void) {
	return a;
}
void ClassA::set_a(int val) {
	a = val;
}
int main() {
	ClassA a;
	a.set_a(20); 
	cout << "Value of a is: " << a.get_a(); 
	return 0;
}

Uitvoer:

Hier is een screenshot van de code:

Code uitleg:

  1. Neem het iostream-headerbestand op in onze code om de functies ervan te gebruiken.
  2. Neem de std-naamruimte op in onze code om de klassen te gebruiken zonder deze aan te roepen.
  3. Maak een klas met de naam ClassA.
  4. Gebruik de modifier voor openbare toegang om het aan te maken klaslid als openbaar toegankelijk te markeren.
  5. Maak de functie met de naam set_a() waaraan één geheel getal val moet doorgegeven worden.
  6. Maak een functie met de naam get_a().
  7. Gebruik de modifier voor privétoegang om het aan te maken klaslid als privé toegankelijk te markeren.
  8. Declareer een integer-variabele met de naam a.
  9. Einde van de les.
  10. Gebruik de klassenaam en de scope-resolutie-operator om toegang te krijgen tot de functie get_a(). We willen definiëren wat de functie doet wanneer deze wordt aangeroepen.
  11. De functie get_a() zou de waarde van variabele a moeten retourneren wanneer deze wordt aangeroepen.
  12. Einde van de definitie van de functie get_a().
  13. Gebruik de klassenaam en de scope-resolutie-operator om toegang te krijgen tot de functie set_a(). We willen definiëren wat de functie doet wanneer deze wordt aangeroepen.
  14. De waarde van de variabele val toewijzen aan variabele a.
  15. Einde definitie van de functie set_a().
  16. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  17. Maak een instantie van ClassA en geef deze de naam a.
  18. Gebruik de bovenstaande klasse-instantie en de functie set_a() om een ​​waarde van 20 toe te kennen aan de variabele a.
  19. Het afdrukken van wat tekst naast de waarde van variabele a op de console. De waarde van variabele a wordt verkregen door de functie get_a() aan te roepen.
  20. Het programma moet waarde teruggeven na succesvolle voltooiing.
  21. Einde van de hoofdtekst van de functie main().

Voorbeeld 3:

#include <iostream>
using namespace std;
class ParentClass {
protected:
	int value;
};
class ChildClass : public ParentClass {
public:
	void setId(int x) {
		value = x;
	}
	void displayValue() {
	cout << "Value is: " << value << endl;
	}
};
int main() {
	ChildClass c;
	c.setId(21);
	c.displayValue();
	return 0;
}

Uitvoer:

Hier is een screenshot van de code:

Code uitleg:

  1. Neem het iostream-headerbestand op in onze code om de functies ervan te gebruiken.
  2. Neem de std-naamruimte op in onze code om de klassen te gebruiken zonder deze aan te roepen.
  3. Maak een klas met de naam ParentClass.
  4. Gebruik de beveiligde toegangsmodifier om het aan te maken klaslid als beveiligd te markeren.
  5. Maak een integer-variabele met de naam waarde.
  6. Einde van de les.
  7. Maak een nieuwe klasse met de naam ChildClass die de ParentClass erft.
  8. Gebruik de beveiligde toegangsmodifier om het aan te maken klaslid te markeren als toegankelijk voor onderliggende klassen.
  9. Maak de functie met de naam setId() waaraan één geheel getal x x moet doorgegeven worden.
  10. De waarde van de variabele x toewijzen aan de variabele waarde.
  11. Einde definitie van de functie setId().
  12. Maak een functie met de naam displayValue().
  13. Druk de waarde van de variabele met de naam waarde af op de console naast andere tekst.
  14. Einde van de hoofdtekst van de functie displayValue().
  15. Einde van de hoofdtekst van de klasse met de naam ChildClass.
  16. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  17. Maak een instantie van ChildClass en geef deze de naam c.
  18. Gebruik de bovenstaande klasse-instantie en de functie setId() om een ​​waarde van 21 toe te wijzen aan de variabele x.
  19. Gebruik de bovenstaande klasse-instantie om de functie met de naam displayValue() aan te roepen.
  20. Het programma moet waarde teruggeven na succesvolle voltooiing.
  21. Einde van de hoofdtekst van de functie main().

Functies voor klasleden

Functies helpen ons om gegevens te manipuleren. Functies van klassenleden kunnen op twee manieren worden gedefinieerd:

  • Binnen de klassedefinitie
  • Buiten de klassedefinitie

Als een functie buiten een klassedefinitie moet worden gedefinieerd, moeten we de scope-resolutie-operator (::) gebruiken. Dit moet vergezeld gaan van de klasse- en functienamen.

Voorbeeld 2:

#include <iostream>
#include <string>
using namespace std;
class Guru99
{
public:
	string tutorial_name;
	int id;
	void printname();
	void printid()
	{
		cout << "Tutorial id is: "<< id;
	}
};
void Guru99::printname()
{
	cout << "Tutorial name is: " << tutorial_name;
}
int main() {
	Guru99 guru99;
	guru99.tutorial_name = "C++";
	guru99.id = 1001;
	guru99.printname();
	cout << endl;
	guru99.printid();
	return 0;
}

Uitvoer:

Hier is een screenshot van de code:

Code uitleg:

  1. Neem het iostream-headerbestand op in ons programma om de functies ervan te gebruiken.
  2. Voeg het string-headerbestand toe aan ons programma om de functies ervan te gebruiken.
  3. Neem de std-naamruimte op in onze code om de klassen te gebruiken zonder deze aan te roepen.
  4. Maak een klas met de naam Guru99.
  5. Gebruik de modifier voor openbare toegang om de klasleden die we gaan maken als openbaar toegankelijk te markeren.
  6. Maak een stringvariabele met de naam tutorial_name.
  7. Maak een integer-variabele met de naam id.
  8. Maak een functie met de naam printname(). Deze functie is niet gedefinieerd binnen de klassedefinitie.
  9. Maak een functie met de naam gedrukt(). Deze functie is gedefinieerd binnen de klassedefinitie. De body is toegevoegd aan de klassedefinitie.
  10. Druk de waarde van de variabele id af naast andere tekst op de console. Merk op dat dit is toegevoegd in de hoofdtekst van de functie printid(). Het wordt alleen uitgevoerd als de functie printid() wordt aangeroepen.
  11. Einde van de hoofdtekst van de functie printid().
  12. Einde van het lichaam van de klasse Guru99.
  13. Het begin van de definitie van de functie printname().
  14. Druk de waarde van de variabele tutorial_name af op de console naast andere tekst. Merk op dat dit is toegevoegd in de hoofdtekst van de functie printname(). Het wordt alleen uitgevoerd als de functie printname() wordt aangeroepen.
  15. Einde van de definitie van de functie printname().
  16. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  17. Maak een instantie van klasse Guru99 en geef deze de naam guru99.
  18. Gebruik de bovenstaande instantie om een ​​waarde van C++ toe te wijzen aan de variabele tutorial_name.
  19. Gebruik de guru99-instantie om een ​​waarde van 1001 toe te wijzen aan de variabele id.
  20. Gebruik de instantie guru99 om de functie printname() aan te roepen.
  21. Roep de opdracht end (end line) om een ​​nieuwe lege regel op de console af te drukken.
  22. Gebruik de instantie guru99 om de functie printid() aan te roepen.
  23. Het programma moet waarde teruggeven na succesvolle voltooiing.
  24. Einde van de hoofdtekst van de functie main().

Constructors en Destructors

Wat is Constructors?

Constructen zijn speciale functies die objecten initialiseren. De C++-compilers roepen een constructor aan bij het maken van een object. De constructors helpen bij het toewijzen van waarden aan klasleden. Dit is natuurlijk nadat ze wat geheugenruimte hebben toegewezen gekregen.

Wat is Destructors?

Destructors daarentegen helpen bij het vernietigen van klasseobjecten.

De naam van de constructor moet gelijk zijn aan de naam van de klasse. Constructors hebben geen retourtype.

De constructor kan binnen of buiten de class body worden gedefinieerd. Indien gedefinieerd buiten de klasse-body, moet het worden gedefinieerd met de klassenaam en de scope-resolutie-operator (::).

Voorbeeld 3:

#include <iostream>  
using namespace std;
class ClassA {
public:
	ClassA() {
		cout << "Class constructor called"<<endl;
	}
	~ClassA() {
		cout << "Class destructor called"<<endl;
	}
};

int main() {
	ClassA a;
	int p = 1;
		if (p) {
			ClassA b; 
		}   
}

Uitvoer:

Hier is een screenshot van de code:

Code uitleg:

  1. Voeg het iostream-headerbestand toe aan de code om de functies ervan te gebruiken.
  2. Neem de std-naamruimte op in onze code om de klassen te gebruiken zonder deze aan te roepen.
  3. Maak een klas met de naam ClassA.
  4. Gebruik de modifier voor openbare toegang om het lid dat we gaan maken te markeren als openbaar toegankelijk.
  5. Maak een constructor voor de klas.
  6. Tekst om af te drukken op de console wanneer de constructor wordt aangeroepen. De endl is een C++-sleutelwoord, wat eindregel betekent. Het verplaatst de muiscursor naar de volgende regel.
  7. Einde van de hoofdtekst van de klassenconstructor.
  8. Maak een destructor voor de klas.
  9. Tekst om af te drukken op de console wanneer de destructor wordt aangeroepen. De endl is een C++-sleutelwoord, wat eindregel betekent. Het verplaatst de muiscursor naar de volgende regel.
  10. Einde van het lichaam van de vernietiger.
  11. Einde van de les.
  12. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  13. Maak een klasseobject en geef het de naam a. De constructor wordt aangeroepen.
  14. Maak een integer-variabele met de naam p en wijs er een waarde van 1 aan toe.
  15. Maak een if-statementblok met de variabele p.
  16. Maak een klasse-object en geef het de naam b. De destructor wordt gebeld.
  17. Einde van de hoofdtekst van het if-statement.
  18. Einde van de hoofdtekst van de functie main().

Samenvatting:

  • C++ is objectgeoriënteerd.
  • Klassen vormen de belangrijkste kenmerken van C++ die het objectgeoriënteerd maken.
  • Een C++-klasse combineert gegevens en methoden voor het manipuleren van de gegevens tot één klasse.
  • Een klasse is een blauwdruk voor een object.
  • Klassen bepalen de vorm van een object.
  • De gegevens en methoden in een klasse staan ​​bekend als klasseleden.
  • Om toegang te krijgen tot klasleden, moet je een instantie van de klas gebruiken.
  • Om een ​​klas aan te maken, gebruiken we het trefwoord klas.
  • De klassenlidfuncties kunnen binnen of buiten een klasse worden gedefinieerd.

C Taal

  1. C# klasse en object
  2. C++ klassen en objecten
  3. C++ vriend Functie en vriend Klassen
  4. C++-klassesjablonen
  5. Operators in C++ met voorbeeld:wat is, typen en programma's
  6. C++ Switch Case Statement met VOORBEELD
  7. C++ Dynamische toewijzing van arrays met voorbeeld
  8. C++-structuur met voorbeeld
  9. std::lijst in C++ met Voorbeeld
  10. Verschil tussen structuur en klasse:uitgelegd met C++-voorbeeld
  11. C# Abstract Class-zelfstudie met voorbeeld:wat is abstractie?