Download presentation
Presentation is loading. Please wait.
Published byGaven Pennick Modified over 9 years ago
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 78539 lianx@utpa.edu
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.