Klasse und Objekt in C++

1- Die Vorstellung

Das Unterlagen wird nach Quelle von ... geschrieben
  • Eclipse 4.5 Mars

2- Beachten Sie bei der Öffnung von Eclipse

Wenn Sie mit  Windows 64bit + Eclipse 64bit + Java64bit arbeiten, können Sie die Eclipse als Administrator öffnen. Es ist etwas kompliziert, dass die  Eclipse die   message auf dem Bildschirm Console während Laufen in dem normalen Modus nicht drucken

3- Erstellen Sie das Projekt C++ auf die Eclipse

Auf die  Eclipse wählen Sie:
  • File/New/Other..
Ihr Projekt wird erstellt.
Ihr Projekt wird erstellt und hat schon eine Quelle File cpp. Wir erklären die Struktur der Quellefile später

4- Die Applikation C++ laufen

Zum ersten Mal sollen Sie Ihr Projekt kompilieren. Klicken Sie die Rechtmaustaste auf dem Projekt und wählen Sie  "Project/Build All".
Auf Ihrer Eclipse kann es einige Projekt geben. Sie brauchen eine neue Laufenkonfiguration einfügen um das Projekt zu laufen
Während der Programmierung sollen Sie das Modus DEBUG wählen.

5- Die Struktur des Programm C++ erklären

Oben sind Sie ein einfaches Programm C++ gelaufen. Es druck ein String auf dem Bildschirm. Im C sollen Sie printf benutzen um ein String zu drucken. Aber mit C++ sollen Sie cout benutzen. Natürlich benutzen alle Funktionen von C im   C++ noch.
Lesen Sie die Benutzungsweise von   cout:
// Cout command used to print a string to the screen:

cout << "One";


// Print a string "One " and next is string "Two ".

cout << "One "  << "Two ";


// Print a string "One " next string "Two " and next number 3.

cout << "One " << "Two "  <<  3 ;

// Print a string "One" and next is newline character.

cout << "One" << endl;
  • TODO

6- Ihre erste Klasse

Das Ziel C++ ist die Objekt-orientierte Programmierung in die Programmierungssprache C. Und die Klasse ist ein Begriff von C ++. Die Klasse ist ein Plan (blueprint) von (die Erstellung) des Objekt.

Um einfach und leicht zu verstehen, benutze ich die Klasse um ein Rechteck mit der Länge und Höhe zu modellieren and eine Funktion zur Kalkulierung der Fläche vom Rechteck
Eine Quellefile   Rectangle.cpp erstellen:
Code:
Rectangle.cpp
#include <iostream>
using namespace std;

namespace mynamespace {

  class Rectangle {

      private:
          int width;
          int height;

      public:
          Rectangle();
          Rectangle(int, int);

      public:
          int getArea() {
              return  width * height ;
          }
          int getWidth() {
              return width;
          }
          int getHeight()  {
              return height;
          }
  };

  Rectangle::Rectangle() {
      width = 10;
      height = 5;
  }

  Rectangle::Rectangle(int a, int b) {
      width = a;
      height = b;
  }
}


// Declare use libraries located in the namespace 'mynamespace'.
// (Including Rectangle (Because it is in this namespace) ).
using namespace mynamespace;

int main() {

// Create a Rectangle 'rect1' from Constructor Rectangle(int, int).
// Value 5 is assigned to the width, the value 4 is assigned to the height.
Rectangle rect1(5, 4);

// Create a Rectangle 'rect2' from default Contructor Rectangle().
// width, height are assigned default values
Rectangle rect2;

cout << "rect1:" << endl;
// Call method to get with
cout << " width: " << rect1.getWidth() << endl;
// Call method to get heght
cout << " height: " << rect1.getHeight() << endl;

// Call the method to calculate the area.
cout << " area: " << rect1.getArea() << endl;

cout << "rect2:" << endl;
cout << " width: " << rect2.getWidth() << endl;
cout << " height: " << rect2.getHeight() << endl;
cout << " area: " << rect2.getArea() << endl;
return 0;
}
Notiz: Das Programm   C/C++ erlaubt nur eine Funktion main() in einem ganzen Projekt. Deshalb sollen Sie den Name von den anderen Funktionen main() zur main_xxx() vor der Durchführung des Beispiel ändern
Das Beispiel durchführen
Beachten Sie: Es gibt einigen Schlüsselwort private, protected, public, die vor dem Feld (field), der Methode (method) oder dem Constructor (constructor) gestellt werden. Vorläufig sagen wir sie nicht. Sie sind   access modifier , den ich in dem nächsten Anleitungsdokument erwähne
  • TODO: LINK?
Jetzt können Sie die Erklärung über ihn lesen. Sie sind sehr wichtig

7- Das Beispiel über die Klasse im C++ (2)

Wir schauen weiter ein Beispiel über die Klasse im   C++, in den der Constructor und die Methode gelegen werden
Circle.cpp
#include <iostream>
#include <math.h>
using namespace std;


namespace mynamespace {

    class Circle {

        private:
            int radius;

        public:
            Circle() {
                radius = 100;
            }
            // Constructor with one parameter.
            // Assign value for radius field.
            Circle(int r) {
                radius = r;
            }

        public:
            float getArea() {
                // M_PI is a constant defined in <math.h>
                return  M_PI * radius* radius ;
            }
            // Method returns radius
            // (The content of this method is written in another place)
            int getRadius();

            // Method to assign a new value for the radius
            void setRadius(int r){
                radius = r;
            }
    };

    // Content of getRadius()
    int Circle::getRadius() {
         return radius;
    }
}

// Declare to use the namespace 'mynamespace'.
using namespace mynamespace;

int main() {

    // Create a Circle with radius = 5.
    Circle circle1(5);

    // Create a Circle with defalt radius (100).
    Circle circle2;

    cout << "Circle 1:" << endl;
    cout << " radius: " << circle1.getRadius()  << endl;
    cout << " area: " << circle1.getArea() << endl;

    cout << "Circle 2:" << endl;
    cout << " radius: " << circle2.getRadius() << endl;
    cout << " area: " << circle2.getArea() << endl;

    // Set new value for the radius.
    circle2.setRadius(200);

    cout << "Circle 2 (After set new Radius):" << endl;
    cout << " radius: " << circle2.getRadius() << endl;
    cout << " area: " << circle2.getArea() << endl;

    return 0;

}
Das Beispiel durchführen

8- Das Beispiel über die Klasse C++

Wenn Sie eine Klasse durch Wizard von der Eclipse  erstellen, erstellt sie 2 File    ClassName.h und  ClassName.cpp. Davon ClassName.h meldet, dass Ihre Klasse die Felder (field), die Methode (method) und die Constructor umfasst, Und Ihre Inhalt werden im   ClassName.cpp.geschrieben
Schauen Sie bitte ein Beispiel. Sie erstellen die Klasse   Person auf die Eclipse  mit die Hilfe vom Wizard.
Erstellen Sie eine Klasse mit dem Name vom Person und liegt im namespace: mynamespace.
Die Klasse P erson wurde erstellt. Sie hat 2 File Person.cpp & Person.h
Jetzt sollen Sie die Kode vom   Person.h & Person.cpp bearbeiten
Person.h
#ifndef PERSON_H_
#define PERSON_H_

// Using string
#include <string>

// Using namespace std (to use string, cout,..)
using namespace std;

namespace mynamespace {

  
    class Person {

        private:
            // A field
            string name;

        public:
            // Default constructor
            Person();
            // Constructor with one parameter.
            Person(string);

            // Destructor.
            virtual ~Person();



        public:
            // Method return name of person.
            string getName();
            // Set new name for person.
            void setName(string);

    };

}

#endif
Person.cpp
// Inclure Person.h
#include "Person.h"
#include <iostream>
#include <string>

using namespace std;

namespace mynamespace {

    Person::Person() {
        // Default name.
        name = "Anonymous";
    }

    Person::Person(string name) {
        // Assign value to field of Person.
        // Using this -> name to refers to name field of Person.
        // (To avoid confusion with the parameter 'name').
        this-> name = name;
    }

    // Destructor, same name with name of class and has no parameters.
    Person::~Person() {
        cout<< "Destructor called" <<endl ;
    }


    // Content of method getName().
    string Person::getName()  {
        return this-> name;
    }

    // Set new name for person.
    void Person::setName(string newName)  {
        // Assign new name.
        name = newName;
    }

}

Destructor 

Wenn die Objekt erstellt und benutzt nicht mehr werden, werden sie aus dem Speicher des Computer verworfen. Gleich bevor es verworfen ist, wird Destructor aufgeruft. Normalerweise benutzen Sie bei der Erstellung eines Objekt die anderen Ressourcen im System, z.B bei der Öffnung der File zum Lesen, können Sie die File in dem ObjektsDestructor befreien 
 
Sie können die Klasse Person auf einer anderen Quellefile benutzen
PersonTest.cpp
#include "Person.h"
#include <iostream>
#include <string>

using namespace std;

 
using namespace mynamespace ;

int main() {

    // Create a Person object.
    Person billGate("Bill Gate");

    cout << "billGate.getName(): " << billGate.getName() << endl;

    // Create a Person from default contructor.

    Person aPerson ;

    cout << "aPerson.getName(): "<< aPerson.getName() << endl;

    cout << "aPerson set new name" << endl;

    // Set new name for aPerson.
    aPerson.setName("Markus Hess");

    cout << "aPerson.getName(): " << aPerson.getName() << endl;

    return 0;


}
Das Beispiel durchführen

View more categories: