Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSCI 3328 Object Oriented Programming in C# Chapter 9: Classes and Objects: A Deeper Look 1 Xiang Lian The University of Texas – Pan American Edinburg,

Similar presentations


Presentation on theme: "CSCI 3328 Object Oriented Programming in C# Chapter 9: Classes and Objects: A Deeper Look 1 Xiang Lian The University of Texas – Pan American Edinburg,"— Presentation transcript:

1 CSCI 3328 Object Oriented Programming in C# Chapter 9: Classes and Objects: A Deeper Look 1 Xiang Lian The University of Texas – Pan American Edinburg, TX

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 2

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 3

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")); } 4

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. 5

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); – 00:00:00 – 12:00:00 AM 6

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 7

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; } 8

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(); } 9

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); } 10

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 11

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;} } 12

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) 13

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 14

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(); } 15

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 16

17 17


Download ppt "CSCI 3328 Object Oriented Programming in C# Chapter 9: Classes and Objects: A Deeper Look 1 Xiang Lian The University of Texas – Pan American Edinburg,"

Similar presentations


Ads by Google