SlideShare une entreprise Scribd logo
1  sur  22
C++ Classes
              &
Object Oriented Programming
Object Oriented Programming
 Programmer thinks about and defines the
  attributes and behavior of objects.

 Often the objects are modeled after real-
  world entities.

 Very different approach than function-based
  programming (like C).
Object Oriented Programming
 Object-oriented programming (OOP)
  – Encapsulates data (attributes) and functions
    (behavior) into packages called classes.
 So, Classes are user-defined (programmer-
  defined) types.
  – Data (data members)
  – Functions (member functions or methods)
 In other words, they are structures +
  functions
Classes in C++
 A class definition begins with the keyword
  class.
 The body of the class is contained within a
  set of braces, { } ; (notice the semi-colon).
                   classclass_name       Any valid
                  }                      identifier
                  .…
                  .…
                                     Class body (data member
                  .…
                                     + methods)
                                       methods
                  ;{
++Classes in C
 Within the body, the keywords private: and
  public: specify the access level of the
  members of the class.
  – the default is private.

 Usually, the data members of a class are
  declared in the private: section of the class
  and the member functions are in public:
  section.
Classes in C++

 classclass_name
}
:private           private members or
          …        methods
          …
          …
    public:
          …        Public members or methods
          …
          …
;{
Classes in C++
 Member access specifiers
  – public:
      can be accessed outside the class directly.
        – The public stuff is the interface.
  – private:
      Accessible only to member functions of class
      Private members and methods are for internal use
       only.
Class Example
 This class example shows how we can
  encapsulate (gather) a circle information
  into one package (unit or class)
                                           No need for others classes to
    class Circle                           access and retrieve its value
                                           directly. The
    {
                                           class methods are responsible for
       private:                            that only.
             double radius;
       public:
             void setRadius(double r);    They are accessible from outside
    double getDiameter();                 the class, and they can access the
             double getArea();            member (radius)
             double getCircumference();
    };
Creating an object of a Class
 Declaring a variable of a class type creates an
  object. You can have many variables of the same
  type (class).
   – Instantiation
 Once an object of a certain class is instantiated, a
  new memory location is created for it to store its
  data members and code
 You can instantiate many objects from a class
  type.
   – Ex) Circle c; Circle *c;
Special Member Functions
 Constructor:
  – Public function member
  – called when a new object is created
    (instantiated).
  – Initialize data members.
  – Same name as class
  – No return type
  – Several constructors
     Function overloading
Special Member Functions

class Circle
                                      Constructor with no
{
                                      argument
   private:
         double radius;
   public:                            Constructor with one
         Circle();                    argument
         Circle(int r);
          void setRadius(double r);
         double getDiameter();
         double getArea();
         double getCircumference();
};
Implementing class methods
   Class implementation: writing the code of class
    methods.
   There are two ways:
    –   Member functions defined outside class
           Using Binary scope resolution operator (::)
           “Ties” member name to class name
           Uniquely identify functions of particular class
           Different classes can have member functions with same
            name
    –   Format for defining member functions
        ReturnType ClassName::MemberFunctionName( ){
           …
        }
Implementing class methods
1. Member functions defined inside class
  – Do not need scope resolution operator, class
    name;
       class Circle
       {                                                   Defined
          private:                                         inside
                double radius;                             class
          public:
                Circle() { radius = 0.0;}
                Circle(int r);
                void setRadius(double r){radius = r;}
                double getDiameter(){ return radius *2;}
                double getArea();
                double getCircumference();
       };
class Circle
{
   private:
          double radius;
   public:
          Circle() { radius = 0.0;}
          Circle(int r);
          void setRadius(double r){radius = r;}
          double getDiameter(){ return radius *2;}
          double getArea();
          double getCircumference();
};
Circle::Circle(int r)
{
                                                     Defined outside class
   radius = r;
}
double Circle::getArea()
{
   return radius * radius * (22.0/7);
}
double Circle:: getCircumference()
{
   return 2 * radius * (22.0/7);
}
Accessing Class Members
 Operators to access class members
  – Identical to those for structs
  – Dot member selection operator (.)
     Object
     Reference to object
  – Arrow member selection operator (->)
     Pointers
class Circle
{
   private:
          double radius;
   public:                                                   The first
          Circle() { radius = 0.0;}                          The second
                                                           constructor is
          Circle(int r);                                    constructor is
                                                              called
          void setRadius(double r){radius = r;}                 called
          double getDiameter(){ return radius *2;}
          double getArea();
                                      void main()                 Since radius is a
          double getCircumference();
                                      {                           private class data
};                                         Circle c1,c2(7);            member
Circle::Circle(int r)
{                                          cout<<“The area of c1:”
   radius = r;                                  <<c1.getArea()<<“n”;
}
double Circle::getArea()                   //c1.raduis = 5;//syntax error
{                                          c1.setRadius(5);
   return radius * radius * (22.0/7);
                                           cout<<“The circumference of c1:”
}                                               << c1.getCircumference()<<“n”;
double Circle:: getCircumference()
{                                          cout<<“The Diameter of c2:”
   return 2 * radius * (22.0/7);                <<c2.getDiameter()<<“n”;
}                                     }
class Circle
{
   private:
          double radius;
   public:
          Circle() { radius = 0.0;}
          Circle(int r);
          void setRadius(double r){radius = r;}
          double getDiameter(){ return radius *2;}
          double getArea();
          double getCircumference();
};
Circle::Circle(int r)                 void main()
                                      {
{
                                           Circle c(7);
   radius = r;                             Circle *cp1 = &c;
}                                          Circle *cp2 = new Circle(7);
double Circle::getArea()
{                                          cout<<“The are of cp2:”
   return radius * radius * (22.0/7);                 <<cp2->getArea();
}
double Circle:: getCircumference() }
{
   return 2 * radius * (22.0/7);
}
Destructors
 Destructors
  – Special member function
  – Same name as class
        Preceded with tilde (~)
  –   No arguments
  –   No return value
  –   Cannot be overloaded
  –   Before system reclaims object’s memory
        Reuse memory for new objects
        Mainly used to de-allocate dynamic memory locations
Another class Example
 This class shows how to handle time parts.
               class Time
               {
                   private:
                       int *hour,*minute,*second;
                   public:
                       Time();
                       Time(int h,int m,int s);
                       void printTime();
                       void setTime(int h,int m,int s);
                       int getHour(){return *hour;}
                       int getMinute(){return *minute;}
  Destructor           int getSecond(){return *second;}
                       void setHour(int h){*hour = h;}
                       void setMinute(int m){*minute = m;}
                       void setSecond(int s){*second = s;}
                       ~Time();
               };
Time::Time()
                      {
                             hour = new int;
                             minute = new int;
                             second = new int;
                             *hour = *minute = *second = 0;
                      }

Dynamic locations     Time::Time(int h,int m,int s)
should be allocated   {
  to pointers first          hour = new int;
                             minute = new int;
                             second = new int;
                             *hour = h;
                             *minute = m;
                             *second = s;
                      }

                      void Time::setTime(int h,int m,int s)
                      {
                             *hour = h;
                             *minute = m;
                             *second = s;
                      }
void Time::printTime()
{
     cout<<"The time is : ("<<*hour<<":"<<*minute<<":"<<*second<<")"
               <<endl;
}
                                   Destructor: used here to de-
Time::~Time()                       allocate memory locations
{
        delete hour; delete minute;delete second;
}

void main()
                                Output:
{
        Time *t;                The time is : (3:55:54)
        t= new Time(3,55,54);   The time is : (7:17:43)
        t->printTime();         Press any key to continue

       t->setHour(7);
       t->setMinute(17);
       t->setSecond(43);

       t->printTime();              When executed, the
                                    destructor is called
       delete t;
}
Reasons for OOP
1. Simplify programming
2. Interfaces
    Information hiding:
      – Implementation details hidden within classes themselves

3. Software reuse
     Class objects included as members of other
      classes

Contenu connexe

Tendances

Unit3 java
Unit3 javaUnit3 java
Unit3 javamrecedu
 
JavaFX and Scala - Like Milk and Cookies
JavaFX and Scala - Like Milk and CookiesJavaFX and Scala - Like Milk and Cookies
JavaFX and Scala - Like Milk and CookiesStephen Chin
 
Cleaner APIs, Cleaner UIs with Visage (33rd Degrees)
Cleaner APIs, Cleaner UIs with Visage (33rd Degrees)Cleaner APIs, Cleaner UIs with Visage (33rd Degrees)
Cleaner APIs, Cleaner UIs with Visage (33rd Degrees)Stephen Chin
 
Defining classes-part-i-constructors-properties
Defining classes-part-i-constructors-propertiesDefining classes-part-i-constructors-properties
Defining classes-part-i-constructors-propertiesCtOlaf
 
Hacking JavaFX with Groovy, Clojure, Scala, and Visage
Hacking JavaFX with Groovy, Clojure, Scala, and VisageHacking JavaFX with Groovy, Clojure, Scala, and Visage
Hacking JavaFX with Groovy, Clojure, Scala, and VisageStephen Chin
 
The Ring programming language version 1.8 book - Part 36 of 202
The Ring programming language version 1.8 book - Part 36 of 202The Ring programming language version 1.8 book - Part 36 of 202
The Ring programming language version 1.8 book - Part 36 of 202Mahmoud Samir Fayed
 
Swift 3 Programming for iOS : extension
Swift 3 Programming for iOS : extensionSwift 3 Programming for iOS : extension
Swift 3 Programming for iOS : extensionKwang Woo NAM
 

Tendances (20)

10slide
10slide10slide
10slide
 
Lecture4
Lecture4Lecture4
Lecture4
 
Lecture4
Lecture4Lecture4
Lecture4
 
Unit3 java
Unit3 javaUnit3 java
Unit3 java
 
Ch2 Liang
Ch2 LiangCh2 Liang
Ch2 Liang
 
JavaFX and Scala - Like Milk and Cookies
JavaFX and Scala - Like Milk and CookiesJavaFX and Scala - Like Milk and Cookies
JavaFX and Scala - Like Milk and Cookies
 
Cleaner APIs, Cleaner UIs with Visage (33rd Degrees)
Cleaner APIs, Cleaner UIs with Visage (33rd Degrees)Cleaner APIs, Cleaner UIs with Visage (33rd Degrees)
Cleaner APIs, Cleaner UIs with Visage (33rd Degrees)
 
Lecture07
Lecture07Lecture07
Lecture07
 
Defining classes-part-i-constructors-properties
Defining classes-part-i-constructors-propertiesDefining classes-part-i-constructors-properties
Defining classes-part-i-constructors-properties
 
Hacking JavaFX with Groovy, Clojure, Scala, and Visage
Hacking JavaFX with Groovy, Clojure, Scala, and VisageHacking JavaFX with Groovy, Clojure, Scala, and Visage
Hacking JavaFX with Groovy, Clojure, Scala, and Visage
 
Clojure Deep Dive
Clojure Deep DiveClojure Deep Dive
Clojure Deep Dive
 
PHP OOP
PHP OOPPHP OOP
PHP OOP
 
The Ring programming language version 1.8 book - Part 36 of 202
The Ring programming language version 1.8 book - Part 36 of 202The Ring programming language version 1.8 book - Part 36 of 202
The Ring programming language version 1.8 book - Part 36 of 202
 
Lecture18
Lecture18Lecture18
Lecture18
 
J slider
J sliderJ slider
J slider
 
Swift 3 Programming for iOS : extension
Swift 3 Programming for iOS : extensionSwift 3 Programming for iOS : extension
Swift 3 Programming for iOS : extension
 
04inherit
04inherit04inherit
04inherit
 
Java Day-3
Java Day-3Java Day-3
Java Day-3
 
OO in JavaScript
OO in JavaScriptOO in JavaScript
OO in JavaScript
 
Object & classes
Object & classes Object & classes
Object & classes
 

En vedette

En vedette (8)

C++ And Object in lecture3
C++  And Object in lecture3C++  And Object in lecture3
C++ And Object in lecture3
 
Classes & objects new
Classes & objects newClasses & objects new
Classes & objects new
 
C++ classes
C++ classesC++ classes
C++ classes
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorials
 
C++ good tutorial
C++ good tutorialC++ good tutorial
C++ good tutorial
 
Object-oriented concepts
Object-oriented conceptsObject-oriented concepts
Object-oriented concepts
 
Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming Concepts
 
Oops ppt
Oops pptOops ppt
Oops ppt
 

Similaire à C++ classes tutorials

C++ Classes Tutorials.ppt
C++ Classes Tutorials.pptC++ Classes Tutorials.ppt
C++ Classes Tutorials.pptaasuran
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorialsMayank Jain
 
[OOP - Lec 09,10,11] Class Members & their Accessing
[OOP - Lec 09,10,11] Class Members & their Accessing[OOP - Lec 09,10,11] Class Members & their Accessing
[OOP - Lec 09,10,11] Class Members & their AccessingMuhammad Hammad Waseem
 
Oops concept in c#
Oops concept in c#Oops concept in c#
Oops concept in c#ANURAG SINGH
 
Chapter22 static-class-member-example
Chapter22 static-class-member-exampleChapter22 static-class-member-example
Chapter22 static-class-member-exampleDeepak Singh
 
Unit 1 Part - 3 constructor Overloading Static.ppt
Unit 1 Part - 3  constructor Overloading Static.pptUnit 1 Part - 3  constructor Overloading Static.ppt
Unit 1 Part - 3 constructor Overloading Static.pptDeepVala5
 
Mca 2nd sem u-2 classes & objects
Mca 2nd  sem u-2 classes & objectsMca 2nd  sem u-2 classes & objects
Mca 2nd sem u-2 classes & objectsRai University
 
Bca 2nd sem u-2 classes & objects
Bca 2nd sem u-2 classes & objectsBca 2nd sem u-2 classes & objects
Bca 2nd sem u-2 classes & objectsRai University
 
Chapter 6.6
Chapter 6.6Chapter 6.6
Chapter 6.6sotlsoc
 
Lecture-03 _Java Classes_from FAST-NUCES
Lecture-03 _Java Classes_from FAST-NUCESLecture-03 _Java Classes_from FAST-NUCES
Lecture-03 _Java Classes_from FAST-NUCESUzairSaeed18
 
Class & Object - User Defined Method
Class & Object - User Defined MethodClass & Object - User Defined Method
Class & Object - User Defined MethodPRN USM
 
Chapter19 constructor-and-destructor
Chapter19 constructor-and-destructorChapter19 constructor-and-destructor
Chapter19 constructor-and-destructorDeepak Singh
 

Similaire à C++ classes tutorials (20)

Classes and objects
Classes and objectsClasses and objects
Classes and objects
 
C++ classes
C++ classesC++ classes
C++ classes
 
C++ classes
C++ classesC++ classes
C++ classes
 
C++ Classes Tutorials.ppt
C++ Classes Tutorials.pptC++ Classes Tutorials.ppt
C++ Classes Tutorials.ppt
 
UNIT I (1).ppt
UNIT I (1).pptUNIT I (1).ppt
UNIT I (1).ppt
 
UNIT I (1).ppt
UNIT I (1).pptUNIT I (1).ppt
UNIT I (1).ppt
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorials
 
[OOP - Lec 09,10,11] Class Members & their Accessing
[OOP - Lec 09,10,11] Class Members & their Accessing[OOP - Lec 09,10,11] Class Members & their Accessing
[OOP - Lec 09,10,11] Class Members & their Accessing
 
Oop objects_classes
Oop objects_classesOop objects_classes
Oop objects_classes
 
Oops concept in c#
Oops concept in c#Oops concept in c#
Oops concept in c#
 
Chapter22 static-class-member-example
Chapter22 static-class-member-exampleChapter22 static-class-member-example
Chapter22 static-class-member-example
 
Unit 1 Part - 3 constructor Overloading Static.ppt
Unit 1 Part - 3  constructor Overloading Static.pptUnit 1 Part - 3  constructor Overloading Static.ppt
Unit 1 Part - 3 constructor Overloading Static.ppt
 
oop objects_classes
oop objects_classesoop objects_classes
oop objects_classes
 
Mca 2nd sem u-2 classes & objects
Mca 2nd  sem u-2 classes & objectsMca 2nd  sem u-2 classes & objects
Mca 2nd sem u-2 classes & objects
 
Bca 2nd sem u-2 classes & objects
Bca 2nd sem u-2 classes & objectsBca 2nd sem u-2 classes & objects
Bca 2nd sem u-2 classes & objects
 
Chapter 6.6
Chapter 6.6Chapter 6.6
Chapter 6.6
 
Lecture-03 _Java Classes_from FAST-NUCES
Lecture-03 _Java Classes_from FAST-NUCESLecture-03 _Java Classes_from FAST-NUCES
Lecture-03 _Java Classes_from FAST-NUCES
 
Class & Object - User Defined Method
Class & Object - User Defined MethodClass & Object - User Defined Method
Class & Object - User Defined Method
 
Chapter19 constructor-and-destructor
Chapter19 constructor-and-destructorChapter19 constructor-and-destructor
Chapter19 constructor-and-destructor
 
Lecture09
Lecture09Lecture09
Lecture09
 

Dernier

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 

Dernier (20)

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 

C++ classes tutorials

  • 1. C++ Classes & Object Oriented Programming
  • 2. Object Oriented Programming  Programmer thinks about and defines the attributes and behavior of objects.  Often the objects are modeled after real- world entities.  Very different approach than function-based programming (like C).
  • 3. Object Oriented Programming  Object-oriented programming (OOP) – Encapsulates data (attributes) and functions (behavior) into packages called classes.  So, Classes are user-defined (programmer- defined) types. – Data (data members) – Functions (member functions or methods)  In other words, they are structures + functions
  • 4. Classes in C++  A class definition begins with the keyword class.  The body of the class is contained within a set of braces, { } ; (notice the semi-colon). classclass_name Any valid } identifier .… .… Class body (data member .… + methods) methods ;{
  • 5. ++Classes in C  Within the body, the keywords private: and public: specify the access level of the members of the class. – the default is private.  Usually, the data members of a class are declared in the private: section of the class and the member functions are in public: section.
  • 6. Classes in C++ classclass_name } :private private members or … methods … … public: … Public members or methods … … ;{
  • 7. Classes in C++  Member access specifiers – public:  can be accessed outside the class directly. – The public stuff is the interface. – private:  Accessible only to member functions of class  Private members and methods are for internal use only.
  • 8. Class Example  This class example shows how we can encapsulate (gather) a circle information into one package (unit or class) No need for others classes to class Circle access and retrieve its value directly. The { class methods are responsible for private: that only. double radius; public: void setRadius(double r); They are accessible from outside double getDiameter(); the class, and they can access the double getArea(); member (radius) double getCircumference(); };
  • 9. Creating an object of a Class  Declaring a variable of a class type creates an object. You can have many variables of the same type (class). – Instantiation  Once an object of a certain class is instantiated, a new memory location is created for it to store its data members and code  You can instantiate many objects from a class type. – Ex) Circle c; Circle *c;
  • 10. Special Member Functions  Constructor: – Public function member – called when a new object is created (instantiated). – Initialize data members. – Same name as class – No return type – Several constructors  Function overloading
  • 11. Special Member Functions class Circle Constructor with no { argument private: double radius; public: Constructor with one Circle(); argument Circle(int r); void setRadius(double r); double getDiameter(); double getArea(); double getCircumference(); };
  • 12. Implementing class methods  Class implementation: writing the code of class methods.  There are two ways: – Member functions defined outside class  Using Binary scope resolution operator (::)  “Ties” member name to class name  Uniquely identify functions of particular class  Different classes can have member functions with same name – Format for defining member functions ReturnType ClassName::MemberFunctionName( ){ … }
  • 13. Implementing class methods 1. Member functions defined inside class – Do not need scope resolution operator, class name; class Circle { Defined private: inside double radius; class public: Circle() { radius = 0.0;} Circle(int r); void setRadius(double r){radius = r;} double getDiameter(){ return radius *2;} double getArea(); double getCircumference(); };
  • 14. class Circle { private: double radius; public: Circle() { radius = 0.0;} Circle(int r); void setRadius(double r){radius = r;} double getDiameter(){ return radius *2;} double getArea(); double getCircumference(); }; Circle::Circle(int r) { Defined outside class radius = r; } double Circle::getArea() { return radius * radius * (22.0/7); } double Circle:: getCircumference() { return 2 * radius * (22.0/7); }
  • 15. Accessing Class Members  Operators to access class members – Identical to those for structs – Dot member selection operator (.)  Object  Reference to object – Arrow member selection operator (->)  Pointers
  • 16. class Circle { private: double radius; public: The first Circle() { radius = 0.0;} The second constructor is Circle(int r); constructor is called void setRadius(double r){radius = r;} called double getDiameter(){ return radius *2;} double getArea(); void main() Since radius is a double getCircumference(); { private class data }; Circle c1,c2(7); member Circle::Circle(int r) { cout<<“The area of c1:” radius = r; <<c1.getArea()<<“n”; } double Circle::getArea() //c1.raduis = 5;//syntax error { c1.setRadius(5); return radius * radius * (22.0/7); cout<<“The circumference of c1:” } << c1.getCircumference()<<“n”; double Circle:: getCircumference() { cout<<“The Diameter of c2:” return 2 * radius * (22.0/7); <<c2.getDiameter()<<“n”; } }
  • 17. class Circle { private: double radius; public: Circle() { radius = 0.0;} Circle(int r); void setRadius(double r){radius = r;} double getDiameter(){ return radius *2;} double getArea(); double getCircumference(); }; Circle::Circle(int r) void main() { { Circle c(7); radius = r; Circle *cp1 = &c; } Circle *cp2 = new Circle(7); double Circle::getArea() { cout<<“The are of cp2:” return radius * radius * (22.0/7); <<cp2->getArea(); } double Circle:: getCircumference() } { return 2 * radius * (22.0/7); }
  • 18. Destructors  Destructors – Special member function – Same name as class  Preceded with tilde (~) – No arguments – No return value – Cannot be overloaded – Before system reclaims object’s memory  Reuse memory for new objects  Mainly used to de-allocate dynamic memory locations
  • 19. Another class Example  This class shows how to handle time parts. class Time { private: int *hour,*minute,*second; public: Time(); Time(int h,int m,int s); void printTime(); void setTime(int h,int m,int s); int getHour(){return *hour;} int getMinute(){return *minute;} Destructor int getSecond(){return *second;} void setHour(int h){*hour = h;} void setMinute(int m){*minute = m;} void setSecond(int s){*second = s;} ~Time(); };
  • 20. Time::Time() { hour = new int; minute = new int; second = new int; *hour = *minute = *second = 0; } Dynamic locations Time::Time(int h,int m,int s) should be allocated { to pointers first hour = new int; minute = new int; second = new int; *hour = h; *minute = m; *second = s; } void Time::setTime(int h,int m,int s) { *hour = h; *minute = m; *second = s; }
  • 21. void Time::printTime() { cout<<"The time is : ("<<*hour<<":"<<*minute<<":"<<*second<<")" <<endl; } Destructor: used here to de- Time::~Time() allocate memory locations { delete hour; delete minute;delete second; } void main() Output: { Time *t; The time is : (3:55:54) t= new Time(3,55,54); The time is : (7:17:43) t->printTime(); Press any key to continue t->setHour(7); t->setMinute(17); t->setSecond(43); t->printTime(); When executed, the destructor is called delete t; }
  • 22. Reasons for OOP 1. Simplify programming 2. Interfaces  Information hiding: – Implementation details hidden within classes themselves 3. Software reuse  Class objects included as members of other classes