Presentation is loading. Please wait.

Presentation is loading. Please wait.

The University of Texas Rio Grande Valley

Similar presentations


Presentation on theme: "The University of Texas Rio Grande Valley"— Presentation transcript:

1 The University of Texas Rio Grande Valley
CSCI 3328 Object Oriented Programming in C# Chapter 9: Classes and Objects: A Deeper Look Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539 This set of slides is revised from lecture slides of Prof. John Abraham. -- Xiang Lian

2 Objectives In this chapter, you will
Learn some examples of classes and objects Know how to use keywords: this, static, readonly Get familiar with the concept of data encapsulation and data hiding

3 Example: Time Class Contains 3 int variables declared as private
Also, 3 public methods: SetTime, ToUniversalString and ToString Does not have a constructor Instead time is passed in using public SetTime, where the three integers are validated to be within range, if not 0 is assigned When constructor is not defined, the compiler adds a default one, assigning 0’s to all three int variables

4 Code for Time1 Class public class Time1 { private int hour; private int minute; private int second; public void SetTime(int h, int m, int s) hour = ((h>=0 && h<24)? h : 0); minute = ((m>=0 && m<60)? m : 0); second = ((s>=0 && s<60)? s : 0); } public string ToUniversalString() return string.Format("{0:D2}:{1:D2}:{2:D2}", hour, minute, second); public override string ToString() return string.Format("{0}:{1:D2}:{2:D2} {3}", ((hour == 0|| hour == 12) ? 12 : hour%12), minute, second, (hour<12) ? "AM" : "PM"));

5 Example: Time Class (cont'd)
Method ToUniversalString returns a string in universal-time format. Return string.Format("{0:D2}:{1:D2}:{2:D2}", hour, minute, second); //like 13:27:06 Method ToString() overrides string Return string.Format ("{0:D2}:{1:D2}:{2:D2}",((hour==0||hour==12)?12: hour%12)); // if hour is 0 or 12 it appears as 12 AM, or PM, else it appears from 1 to 11, if hour is <12 it is AM.

6 Invoke Methods of Time Object
Time1 time = new Time1(); Console.WriteLine("The initial universal time is" + time.ToUniversalString()); 00:00:00 Console.WriteLine("The initial universal time is" + time.ToString()); 12:00:00 AM time.SetTime (13, 27, 6); 13:27:06 1:27:06 PM time.SetTime(99,99,99);

7 Indexers The indices can be either integer (as conventional arrays) or non-integer such as the data element name Indexers are defined like properties in a class See the example

8 class IntIndexer { private string[] myData; public IntIndexer(int size) myData = new string[size]; for (int i = 0; i < size; i++) myData[i] = "empty"; } public string this[int pos] get return myData[pos]; set myData[pos] = value;

9 static void Main(string[] args)
{ int size = 10; IntIndexer myInd = new IntIndexer(size); myInd[0] = "Artem Chebotko"; myInd[1] = "Robert Scheweller"; myInd[2] = "Pearl Brazier"; myInd[3] = "Laura Grabowski"; myInd[4] = "John Abraham"; myInd[5] = "Emmet Tomai"; myInd[6] = "Yang Liu"; myInd[7] = "Bin Fu"; myInd[8] = "Xiang Lian"; Console.WriteLine("\nIndexer Output\n"); for (int i = 0; i < size; i++) Console.WriteLine("myInd[{0}]: {1}", i, myInd[i]); } Console.ReadKey();

10 Keyword: this public class SimpleTime { private int hour; private int minute; private int second; public void SetTime(int hour, int minute, int second) this.hour = hour; this.minute = minute; this.second = second; } pubic void Reset() this.SetTime(0, 0, 0);

11 More Keywords: readonly
private readonly int INCREMENT; By convention, readonly variables are with capital letters like constants Constructors can initialize readonly variables for multiple times

12 More Keywords: static private static int count = 0;
Maintain the number of objects for a class Static variables belong to the class, not objects Static variables can be shared by multiple objects Static variables can be referred by properties public static int Count { get {return count;} }

13 Encapsulation Let the program hide some of the data and operation of a class while exposing others private Implementation of a method is hidden from the user, so it appears like a black box Think of a person driving a car He does not need to know the internal working of the engine or the way gear changes work, to be able to drive the car (Encapsulation) Instead, he needs to know things such as how much turning the steering wheel needs, etc. (Abstraction)

14 Inheritance A new class is created by absorbing an existing class’s members and enhancing them with new or modified capabilities. Base class : the existing class from which a new class inherits members. Derived class : the new class that inherited from the base class. Each new class can become the base class for a future derived class. Is-a relationship and has-a relationship. Is-a represents inheritance. Has-a represents a composition. Inheritance allows you to reuse code

15 Inheritance (cont'd) public class ParentClass { public ParentClass()
Console.WriteLine("Parent Constructor."); } public void print() Console.WriteLine("I'm a Parent Class."); public class ChildClass : ParentClass public ChildClass() Console.WriteLine("Child Constructor."); public static void Main() ChildClass child = new ChildClass(); child.print(); Console.ReadKey();

16 Polymorphism Enables you to “program in general” than “program in specific” Enables us to write applications that process objects that share the same base class in a class hierarchy as if they were all objects of the base class It allows you to invoke derived class methods through a base class reference during run-time overrides means they provide their own definition and implementation. At run-time, when client code calls the method, the CLR looks up the run-time type of the object, and invokes that override of the virtual method Thus in your source code you can call a method on a base class, and cause a derived class's version of the method to be executed

17


Download ppt "The University of Texas Rio Grande Valley"

Similar presentations


Ads by Google