C# and Object Oriented Programming

advertisement
C# Programming














Fundamentals of Object-Oriented Programming
Introducing Microsoft .NET
Overview of C#
Using Value-Type variables
Statements and Exceptions
Methods and Parameters
Strings Arrays and Collections
C# and Object Oriented Programming
Using Reference-Type Variables
Creating and Destroying Objects
inheritance in C#
Aggregations, Namespaces and Advance Scope
Operators, Delegates and Events
Properties and Indexers
Fundamentals of Object-Oriented
Programming






What is OOP
Objects vs. Classes
Instantiation
Encapsulation
Inheritance
Polymorphism
What is OOP


Object-oriented programming (OOP) is a
programming language model organized around
"objects" rather than "actions" and data rather
than logic.
The first step in OOP is to identify all the
objects you want to manipulate and how they
relate to each other
Objects vs. Classes
Object MyHouse
An Instance of HouseOfFun
Class HouseOfFun
Object MyHouse
An Instance of HouseOfFun
Object YelloHouse[0]
An Instance of HouseOfFun
Object YelloHouse[1]
An Instance of HouseOfFun
A blue print of the
HouseOfFun house.
Objects vs. Classes
public class HouseOfFun
{
public HouseOfFun(string city, int rooms, int buildYear)
{
this.city = city;
this.rooms = rooms;
this.buildYear = buildYear;
}
protected string city;
protected int rooms;
protected int buildYear;
public int calcHouseAge()
{
// calculation just for this sample
return (DateTime.Now.Year - buildYear);
}
}
Instantiation
class mainClass
{
static void Main( )
{
HouseOfFun myHouse = new HouseOfFun("Tel Aviv",2,1963);
Console.WriteLine(myHouse.calcHouseAge());
}
}
Encapsulation


The ability of an object to hide its internal data
and methods, making only the intended parts of
the object programmatically accessible.
C#
Public
 Private
 protected

Inheritance




Subclass that is defined can inherit the
definitions of one or more general classes.
An object in a subclass need not carry generic
definition of data and methods
speeds up program development;
ensures an inherent validity (what works and is
consistent about the class will also work for the
subclass).
Polymorphism


Polymorphism gives you the ability to group
objects that have a common base class and treat
them consistently.
Polymorphism allows you to extend or enhance
your system without modifying or breaking
existing code.
Encapsulation, Inheritance, Polymorphism
Sample page 1/3: class with virtual method
class Teacher
{
public Teacher(string firstName,string lastName,int practiceYears,double payRate)
{
this.firstName = firstName;
this.lastName = lastName;
this.practiceYears = practiceYears;
this.payRate = payRate;
}
protected string firstName;
protected string lastName;
protected int practiceYears;
protected double payRate;
public virtual double CalculatePayment(int hourseWorked)
{
// do something
return 1,000,000.00; // bogus value
}
}
Encapsulation, Inheritance, Polymorphism - 2/3
FullTimeTeacher is derived from Teacher
class FullTimeTeacher:Teacher
{
public FullTimeTeacher(string firstName,string lastName,int practiceYears,double payRate)
:base (firstName,lastName, practiceYears,payRate)
{
}
public override double CalculatePayment(int hourseWorked)
{
//do something
}
}
class PartTimeTeacher:Teacher
{
public FullTimeTeacher(string firstName,string lastName,int practiceYears,double payRate)
:base (firstName,lastName, practiceYears,payRate)
{
}
public override double CalculatePayment(int hourseWorked)
{
//do something
}
}
Encapsulation, Inheritance, Polymorphism 3/3
- teachers group hold FullTimeTeacher & PartTimeTeacher
- CalculatePayment code stays the same
class PolymorphismSample
{
protected Teacher[] teachers;
protected void LoadTeachers()
{
//in a real world situation we will use the database
teachers = new Teacher[2];
teachers[0] = new FullTimeTeacher("Marta", "Kohen", 25, 2500.00);
teachers[2] = new PartTimeTeacher("Bar", "Shalom", 40, 50.00);
}
protected void CalculatePayment()
{
foreach(Teacher tcr in teachers)
{
tcr.CalculatePayment(40);
}
}
}
Introducing Microsoft .NET






The .NET Framework
The Common Language Runtime
The .NET Framework Class Libraries
Microsoft Intermediate Language and the Jitters
Unified Type System
Metadata and Reflection
The .NET Framework
ASP.NET
Windows Forms
Data and XML
Base Classes
Common Language Runtime
The Common Language Runtime
Common Type System
Intermediate Language
to
Native Code Compilers
Execution
Support
Security
GC, Stack Walk, Code Manager
Class Loader & Memory Layout
The .NET Framework Class Libraries
.Net Class Libraries
provides language
interoperability.
Sample:
The Class shown in
this class Browser
System.Data.OleDb.
OleDbConnection
can be used by all
the many .Net
languages
Microsoft Intermediate Language
and the Jitters
Unified Type System
Metadata and Reflection
Overview of C#




Structure of a c# program
Basic Input/Output Operations
Recommended Practices
Compiling Running and Debugging
Using Value-Type variables







Common Type System
Naming Variables
Using Built-in Data Types
Compound Assignment
Increment and Decrement
Creating User Defined Data Types
Converting Data Types
Statements and Exceptions





Selection Statements
Iteration Statements
Jump Statements
Handling Basic Exceptions
Raising Exceptions
Methods and Parameters



Methods
Parameters
Overload Methods
Strings Arrays and Collections







Strings
Creating Arrays
Using Arrays
Collections
.NET Framework Arrays
.Net Framework Collections
working with Strings, Enumerators and
Collections
C# and Object Oriented
Programming

Creating and using Classes
Using Reference-Type Variables






Reference-Type Variables
Common Reference Types
The Object Hierarchy
Namespaces in the .Net Framework
Data Conversions
Type-Safe Casting
Creating and Destroying Objects




Constructors
Initializing Data
Objects and Memory
Destructors
inheritance in C#





Deriving Classes
Implementing Methods
Sealed Classes
Interfaces
Abstract Classes
Aggregations, Namespaces and
Advance Scope




Using internal classes, Methods and Data
Using Aggregation
Using Namespaces
Using Modules and Assemblies
Operators, Delegates and Events





Operators
Operator Overloading
Delegates
Events
When to use Delegates, Events and Interfaces
Properties and Indexers


properties
Indexers
Review
C# Advance
Attributes
 The SDK Tools

Attributes



Overview of attributes
Defining Custom Attributes
Retrieving Attributes Values
The SDK Tools




Configuration and Deployment Tools
Debugging Tools
Security Tools and Utilities
General Tools
Review
Download