Η δημιουργία προτύπων-τάξεων στον αντικειμενοστραφή προγραμματισμό, και το πως τα δημιουργείς αυτά, αποτελεί το μέτρο αντίληψης και κατανόησης ενός προγραμματιστή του αντικειμένου με το οποίο ασχολείται. Η C++ είναι μια γλώσσα ισχυρή με αρκετή γραφεικρατία. Παραθέτω παράδειγμα προτύπου: αρχικά το αρχείο header(ofball.h) που αποτελέι την επιφάνεια διάδρασης(interface) του προτύπου.

#ifndef _of_ball        // by using this if statement you
                                // prevent the class to be called more
                                // than once - in other words
                                // what we're saying here is


#define _of_ball        //if the class has not been defined then define it
#include "ofmain.h"
class ofball {
   public:
        // methods-μηνύματα
        void update();
        void draw();

        //constructor-αντικείμενα
        ofball(float x, float y, int dim);

        // variables-μεταβλητές
        float x;
        float y;
        int dim;
        float speedx;
        float speedy;
    private:
};//don't forget the semicolon in the end of the class definition

#endif

και, στη συνέχεια το cpp (ofball.cpp) αρχείο στο οποίο γίνοται οι πράξεις

#include "ofball.h" ofball::ofball(float _x, float _y, int _dim) { x = _x; y = _y; dim = _dim;

speedx = ofrandom(-1, 1); speedy = ofrandom(-1, 1); } void ofball::update(){ if(x < 0 ){ x = 0; speedx *= -1; } else if(x > ofgetwidth()){ x = ofgetwidth(); speedx *= -1; } if(y < 0 ){ y = 0; speedy *= -1; } else if(y > ofgetheight()){ y = ofgetheight(); speedy *= -1; }

x+=speedx; y+=speedy; } void ofball::draw(){ ofsetcolor(120,120,120); ofcircle(x, y, dim); }


Η συνάρτηση ~ofball() {} ονομάζεται destructor (καταστροφέας) και καλέιται αυτόματα όποτε χρειαστεί η καταστροφή του ατικειμένου της κλάσης ofball. Ο destructor είναι μοναδικός και δεν παίρνει ορίσματα. Αν δεν τον ορίσει ο χρήστης τον ορίζει ο compiler (μεταφραστής). Για να σβήσεις ένα αντικείμενο που το έχεις δημιουργήσει μέσω new: delete objname; link

Posted on .
blog comments powered by Disqus