Presentation is loading. Please wait.

Presentation is loading. Please wait.

Object-Oriented Programming C programmers concentrate on writing functions.functions By contrast, MC++ programmers concentrate in creating their own user-defined.

Similar presentations


Presentation on theme: "Object-Oriented Programming C programmers concentrate on writing functions.functions By contrast, MC++ programmers concentrate in creating their own user-defined."— Presentation transcript:

1 Object-Oriented Programming C programmers concentrate on writing functions.functions By contrast, MC++ programmers concentrate in creating their own user-defined types, called classes. classes When building an MC++ application, each class definition normally is placed in a header file, and that class’s method definitions are placed in source-code files with the same name as the header but extension.cpp

2 An example – define a managed class (header file) #pragma once // #using using namespace System; public __gc class Time { public: Time(); void SetTime(int, int, int); String *ToUniversalString(); String *ToStandardString(); private: int hour; int minute; int second; };

3 Time::Time() { hour =0; minute = 0; second = 0; } Void Time::SetTime( int h, int m, int s) { hour = h; minute = m; second = s; } String *Time1::ToUniversalString() { return String::Concat(hour.ToString(S”D2”), S”:”, minute.ToString(S”D2”), S”:”, second.ToString(S”D2”)); } String *Time1::ToStandardString() { return String::Concat( ((hour == 12 || hour == 0) ? 12 : hour %12).ToString(), S”:”, minute.ToString(S”D2”), S”:”, second.ToString(S”D2”), S” “, (hour<12? S”AM” : S”PM”)); } An example – method definition (implementation)

4 #pragma once directive instructs the compiler to process a header file only once even if it is included in more than one file in a project. Class Time1 implicitly inherits from class Object. Every class in MC++(Except Object) inherits from an existing class definition Keyword __gc specifies that class Time1 is a managed class. Because class Time is managed class, all objects of this class must be created with new operator Use String method Concat to format the minutes as two-digit values with leading zeros if necessary Class MessageBox create a dialog. Dialogs are windows that typically display important messages to the user of an application. Class dialog is defined in namespace System::Windows::Forms

5 An example- use Time class #include<stdafx.h” #include”Time.h” #using using namespace System; using namespace System::Windows::Forms; int _tmain() { Time * t = new Time(); String *output; output = String::Concat(S”Initial univesal time is”, t->ToUniversalString()); t->setTIme( 10, 30,0); output = String::Concat(output, S”\nUniversal time after SetTime is: “, t->ToUniversalString()); MessageBox::Show(output, S”Tsting class Time”); return 0; }

6 properties Methods of a class can manipulate that class’s private data members Classes provide public properties to allow clients to set ( assign value to) or get(obtain value of) private data members __property void set_Hour( int val) { hour = (val >=0 &&val<24)?val:0); } __property int get_Hour() { return hour; }

7 properties Providing set and get capabilities appears to be the same as making the variables public Every property method name must be preceded by either set_ or get_ __property void set_propertyName() PropertyName specifies the name of property. Hour is scalar property Scalar property is property that can be accessed like variables. We assign value to scalar properties using = operator. When assignment occurs, the code in the set accessor for that property executes Time *time = new Time(); time->Hour = Int32::Parse(Console::ReadLine());

8 Static members Static variable: all class objects share only one copy of a static variable. Static variable represents class-wide information Declaration static in count; Static member can be initialized in its declaration Public static data can be accessed from client code through the class name using the scope resolution operator:: The private static data can be accessed only through methods or property of the class

9 Static methods To enable a client to access a private static member when no objects of the class exists, the class must provide a public static method or property A static method cannot access non-static data Static variable and static methods exist even when there are no objects of that class in which the static members are defined

10 OOP- inheritance Inheritance is one of main features of Object-Oriented Programming Inheritance is a form of software reusability on which classes are created by absorbing an existing class’s data and behaviors and embellishing them with new capabilities When creating a class, instead of writing completely new data members and methods, the programmer can designate that the new class should inherit the data members, properties and methods of another class. The previous defined class is called base class, and the new class is referred to as the derived class other language, Java refer to base as superclass and derived class as subclass

11 Point class public __gc class Point { public: Point(); Point(int, int); __property int get_X(){return x;} __property void set_X(int val){x = val;} __property int get_Y(){ return y;} __property void set_Y(int val){ y = val;} String *ToString(); private: int x,y; };

12 Implementation String * Point::ToString() { return String::Concat(S”[“,x.ToString(), S”,”,y.ToString(), S”]”); } Point::Point(){ } Point::Point( int xval, int yval) { x = xval; y = yval; }

13 Circle – inherits Point class public __gc class Circle :public Point { public: Circle(); Circle( int,int,double); __property double get_Radius(){return radius;} __property void set_Radius(double r) {if( r > 0) radius = r;} double Diameter(); double Area(); double Circumference(); String *ToString(); private: double radius; };

14 Circle Circle::Circle(){} Circle::Circle(int xval,int yval, double r) :Point(xval,yval) { radius = r;} double Circle::Diameter(){ return radius *2;} double Circle::Circumference() { return Math::PI *Diameter(); } double Circle::Area() { return Math::PI * Math::Pow(radius, 2);} String *Circle::ToString() { return String::Concat(S”center= “, __super::ToString(), S”;Radius = “, Radius.ToString()); }

15 Sample client code int _tmain() { Circle *cir = new Circle(4,5,2.5); String *output = String::Concat(S”X coordinate is “, cir->X.ToString(), S”\nY coordinate is “, cir->Y.ToString(), S”\nRadius is “, cir->Radius.ToString()); return 0; }

16 Practice Define a class called Cylinder that inherits from Circle. Has data member height Methods: Volume() that return volume of the cylinder Area() return the cylinder’s surface area Properties: set_Height and get_Height

17 Use the following client code to test your class definition int _tmain() { Cylinder *cyn = new Cylinder(12,23,2.5,5.7); String *out = String::Concat (S"X coordinate is ", cyn->X.ToString(), S"\nY coordinate is ", cyn->Y.ToString(),S"\nRadius is ", cyn->Radius.ToString(),S"\nHeight is ", cyn->Height.ToString()); out = String::Concat (out, S"\nDiameter is ", cyn->Diameter().ToString(S"F"), S"\n"); out = String::Concat (out, S"Volume is", cyn->Volume().ToString(S"F")); MessageBox::Show (out, S"Demonstrating class Cylinder"); return 0; }


Download ppt "Object-Oriented Programming C programmers concentrate on writing functions.functions By contrast, MC++ programmers concentrate in creating their own user-defined."

Similar presentations


Ads by Google