Notes on C# and object oriented programming for CSE 3902 By: Matt Boggus Some material based on slides by Roger Crawfis.

Slides:



Advertisements
Similar presentations
Abstract Data Types Data abstraction, or abstract data types, is a programming methodology where one defines not only the data structure to be used, but.
Advertisements

CSE 1302 Lecture 8 Inheritance Richard Gesick Figures from Deitel, “Visual C#”, Pearson.
Road Map Introduction to object oriented programming. Classes
Inheritance. Extending Classes It’s possible to create a class by using another as a starting point  i.e. Start with the original class then add methods,
OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
C#.NET C# language. C# A modern, general-purpose object-oriented language Part of the.NET family of languages ECMA standard Based on C and C++
Data Abstraction and Object- Oriented Programming CS351 – Programming Paradigms.
Notes on C# and software design By: Matt Boggus Some material based on slides by Roger Crawfis.
C++ fundamentals.
Object-Oriented Programming in C# Object-Oriented CSE Prof. Roger Crawfis.
Review of C++ Programming Part II Sheng-Fang Huang.
Differences between C# and C++ Dr. Catherine Stringfellow Dr. Stewart Carpenter.
Programming in C# Language Overview
OOP Languages: Java vs C++
Object-Oriented Programming in C# Object-Oriented CSE 668 Prof. Roger Crawfis.
Object Based Programming. Summary Slide  Instantiating An Object  Encapsulation  Inheritance  Polymorphism –Overriding Methods –Overloading vs. Overriding.
Programming Languages and Paradigms Object-Oriented Programming.
CSM-Java Programming-I Spring,2005 Introduction to Objects and Classes Lesson - 1.
CSE 425: Object-Oriented Programming II Implementation of OO Languages Efficient use of instructions and program storage –E.g., a C++ object is stored.
Chapter 8 More Object Concepts
CSM-Java Programming-I Spring,2005 Objects and Classes Overview Lesson - 1.
Introduction to Object Oriented Programming. Object Oriented Programming Technique used to develop programs revolving around the real world entities In.
BIM313 – Advanced Programming Techniques Object-Oriented Programming 1.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
JavaScript, Fourth Edition
Introduction to C# C# is - elegant, type-safe, object oriented language enabling to build applications that run on the.NET framework - types of applications.
Programming Languages and Paradigms Object-Oriented Programming.
Chapter 6 Object-Oriented Java Script JavaScript, Third Edition.
Objects and Classes Chapter 6 CSCI CSCI 1302 – Objects and Classes2 Outline Introduction Defining Classes for Objects Constructing Objects Accessing.
Chapter 13. Procedural programming vs OOP  Procedural programming focuses on accomplishing tasks (“verbs” are important).  Object-oriented programming.
CSE 425: Data Types I Data and Data Types Data may be more abstract than their representation –E.g., integer (unbounded) vs. 64-bit int (bounded) A language.
Object Based Programming Chapter 8. 2 In This Chapter We will learn about classes Garbage Collection Data Abstraction and encapsulation.
1 Chapter 8 – Classes and Object: A Deeper Look Outline 1 Introduction 2 Implementing a Time Abstract Data Type with a Class 3 Class Scope 4 Controlling.
Copyright © 2012 Pearson Education, Inc. Chapter 9 Classes and Multiform Projects.
C++ Programming Basic Learning Prepared By The Smartpath Information systems
Topic 1 Object Oriented Programming. 1-2 Objectives To review the concepts and terminology of object-oriented programming To discuss some features of.
Introduction to C#. Why C#? Develop on the Following Platforms ASP.NET Native Windows Windows 8 / 8.1 Windows Phone WPF Android (Xamarin) iOS (Xamarin)
Programming in Java CSCI-2220 Object Oriented Programming.
Object Oriented Software Development
C# Classes and Inheritance CNS 3260 C#.NET Software Development.
Introduction to c++ programming - object oriented programming concepts - Structured Vs OOP. Classes and objects - class definition - Objects - class scope.
Summing Up Object Oriented Design. Four Major Components: Abstraction modeling real-life entities by essential information only Encapsulation clustering.
Comp 248 Introduction to Programming Chapter 4 & 5 Defining Classes Part B Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 26 - Java Object-Based Programming Outline 26.1Introduction.
Rina System development with Java Instructors: Rina Zviel-Girshin Lecture 4.
Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.
Classes. Constructor A constructor is a special method whose purpose is to construct and initialize objects. Constructor name must be the same as the.
Object-Oriented Programming Chapter Chapter
Object Oriented Programming
CIS 270—Application Development II Chapter 8—Classes and Objects: A Deeper Look.
UMass Lowell Computer Science Java and Distributed Computing Prof. Karen Daniels Fall, 2000 Lecture 9 Java Fundamentals Objects/ClassesMethods Mon.
 In the java programming language, a keyword is one of 50 reserved words which have a predefined meaning in the language; because of this,
Introduction to Object-Oriented Programming Lesson 2.
Chapter 11: Advanced Inheritance Concepts. Objectives Create and use abstract classes Use dynamic method binding Create arrays of subclass objects Use.
Presented by Ted Higgins, SQL Server DBA An Introduction to Object – Oriented Programming.
Terms and Rules II Professor Evan Korth New York University (All rights reserved)
Author: DoanNX Time: 45’.  OOP concepts  OOP in Java.
C# Fundamentals An Introduction. Before we begin How to get started writing C# – Quick tour of the dev. Environment – The current C# version is 5.0 –
 Description of Inheritance  Base Class Object  Subclass, Subtype, and Substitutability  Forms of Inheritance  Modifiers and Inheritance  The Benefits.
Classes CS 162 (Summer 2009). Parts of a Class Instance Fields Methods.
Object Based Programming Chapter 8. 2 Contrast ____________________ Languages –Action oriented –Concentrate on writing ________________ –Data supports.
Notes on software design and C#
Inheritance Modern object-oriented (OO) programming languages provide 3 capabilities: encapsulation inheritance polymorphism which can improve the design,
C# for C++ Programmers 1.
Inheritance and Polymorphism
Object Oriented Programming in Java
Object Based Programming
By: Matt Boggus Some material based on Roger Crawfis’ C# slides
Chengyu Sun California State University, Los Angeles
Presentation transcript:

Notes on C# and object oriented programming for CSE 3902 By: Matt Boggus Some material based on slides by Roger Crawfis

Outline Motivation for using OOP Motivation for using C# C# syntax and examples – Classes – Interfaces – Abstract classes – Class internals – Type conversion Demo of development environment

Why Object-Oriented Programming? Code Reuse – Objects made for one program are usable in another. – Inheritance - objects can reuse parts of other objects without modifying the original – Polymorphism - an operation may exhibit different behaviors in different instances (i.e. it can take on multiple forms) Encapsulation – All data and functionality for an object are included inside its implementation – For a well designed object, the client/user of an object does not need to know its implementation details. – The implementer of the object controls what functionality of the object is available to clients Design Benefits – Creation of objects encourages planning as objects must be implemented before being used – Generally speaking: more planning = less flaws Software Maintenance – Object implementation is not coupled to the application, thus making changes to either is easier Additional discussion can be found herehere

An alternative – entity component system A component encapsulates a specific set of functions or data Entities are objects that may have any number of attached components Example – Unity game engine – Almost everything is a GameObject – Components can be attached to GameObjects Ex: Collider, RigidBody, Scripts, etc. – Every component is updated by a corresponding system or manager class

Object-oriented vs. Component based OOP – Focus on readability – Objects are an abstraction to be used by client programmers, and should follow a mental model of the actual or imagined object it represents – Objects are “nouns” that have fields “adjectives” and methods “verbs” Components – Focus on reusability – Software should be constructed by gluing together prefabricated components like in electrical engineering – Functionality is attached to an object instead of inside its implementation

Why C#? Compared to other languages – Focus on object oriented programming –.NET framework Large library of features and objects Portability and integration with software written in other languages – More discussion herehere Other reasons – Game engines support C# -> XNA, Monogame, Unity – Useful in other CSE courses (3541 Game and Animation Techniques and 5912 Game Capstone) – Visual Studio is a single point of access for software development, source code control, project management, and code reviews and is Microsoft software -> use Microsoft developed language

C# language features Namespaces Classes – Fields – Properties – Methods – Attributes – Events Interfaces (contracts) – Methods – Properties – Events Control Statements – if, else, while, for, switch – foreach Additional Features – Operation Overloading – Structs – Enums OO Features – Type Unification – Inheritance – Polymorphism

Some syntax to know about C# No pointers. Use the dot “.” to access both namespaces and fields/methods. – Automatic memory management – garbage collection All fields are initialized by the CLR (zero for value types, null for reference types) – Structs are value type, classes are reference type Switch statements – Does not “fall-thru” (unless empty) – Can take bool’s, enum’s, integer types, and strings Expressions must be useful (no a==b;) Conditionals must evaluate to a Boolean

CLASSES VS. STRUCTS

Classes vs. structs Both are user-defined types Both can implement multiple interfaces Both can contain – Data Fields, constants, events, arrays – Functions Methods, properties, indexers, operators, constructors – Type definitions Classes, structs, enums, interfaces, delegates

ClassStruct Reference typeValue type Can inherit from any non-sealed reference type No inheritance (inherits only from System.ValueType ) Can have a destructorNo destructor Can have user-defined parameterless constructor No user-defined parameterless constructor Classes vs. structs

public class Car : Vehicle { public enum Make { GM, Honda, BMW } private Make make; private string vid; private Point location; Car(Make make, string vid, Point loc) { this.make = make; this.vid = vid; this.location = loc; } public void Drive() { Console.WriteLine(“vroom”); } } Car c = new Car(Car.Make.BMW, “JF3559QT98”, new Point(3,7)); c.Drive(); Class definition syntax

INTERFACES

Interfaces An interface defines a contract – An interface is a type – Contain definitions for methods, properties, indexers, and/or events – Any class or struct implementing an interface must support all parts of the contract Interfaces provide no implementation – When a class or struct implements an interface it must provide the implementations

Interfaces Explicit interface – Requires/ensures clauses or pre/post-conditions – Functionality is explicitly defined Implicit interface – Only method signatures are specified – Ex: Bird interface defines void Fly() Duck class implements void Fly { position.y += 5; } Penguin class implements void Fly { // no-op }

public interface IDelete { void Delete(); } public class TextBox : IDelete { public void Delete() {... } } public class Car : IDelete { public void Delete() {... } } TextBox tb = new TextBox(); tb.Delete(); IDelete deletableObj = new Car(); deletableObj.Delete(); deletableObj = new TextBox(); deletableObj.Delete(); Interfaces example

Object and interface design Keep it simple! – The Magical Number Seven, Plus or Minus Two The Magical Number Seven, Plus or Minus Two The average person can hold 7 ± 2 objects in memory at a time Experts recall more by “chunking” – combining multiple objects into one – Think You're Multitasking? Think Again Think You're Multitasking? Think Again The average person is bad at multi-tasking, so focus on what you’re doing if you want it done well Only provide the minimum amount of functionality required You can always add functionality later, but beware functionality bloat

ABSTRACT CLASSES

Abstract class Similar to interfaces – Cannot be instantiated – In some cases, contain no executable code – Can contain method headers/signatures and properties (more on these in a bit), but unlike interfaces they can contain concrete elements like method bodies and fields Some quirks when working with abstract classes and interfaces – A concrete class may implement an unlimited number of interfaces, but may inherit from only one abstract (or any other kind of) class – A class that is derived from an abstract class may still implement interfaces For 3902, you can use abstract classes to avoid code duplication when functionality of methods will be the same for classes that implement them

abstract class Shape { protected int x = 50; protected int y = 50; public abstract int Area(); } class Square : Shape { public int width; public int height; public override int Area() { return width * height; } public void MoveLeft() { x--; } Abstract class example See us/library/sf985hc5.aspx for a longer examplehttp://msdn.microsoft.com/en- us/library/sf985hc5.aspx Another good resource on this topic: s/6118/All-about-abstract-classes

CLASS INTERNALS

The this keyword is a predefined variable available in non-static function members – Used to access data and function members unambiguously public class Person { private string name; public Person(string name) { this.name = name; } public void Introduce(Person p) { if (p != this) Console.WriteLine(“Hi, I’m “ + name); } this name is a parameter and a field.

base The base keyword can be used to access class members that are hidden by similarly named members of the current class public class Shape { private int x, y; public override string ToString() { return "x=" + x + ",y=" + y; } internal class Circle : Shape { private int r; public override string ToString() { return base.ToString() + ",r=" + r; }

public class MyClass { public const string version = “1.0.0”; public const string s1 = “abc” + “def”; public const int i3 = 1 + 2; public const double PI_I3 = i3 * Math.PI; public const double s = Math.Sin(Math.PI); //ERROR... } Constants A constant is a data member that is evaluated at compile-time and is implicitly static (per type) – e.g. Math.PI

Fields A field or member variable holds data for a class or struct Can hold: – A built-in value type – A class instance (a reference) – A struct instance (actual data) – An array of class or struct instances (an array is actually a reference) – An event

Properties A property is a member that provides a flexible mechanism to read, write, or compute the value of a private field. Properties can be used as if they are public data members, but they are actually special methods called accessors. This enables data to be accessed easily and still helps promote the safety and flexibility of methods. Properties encapsulate a getting and setting a field – Useful for changing the internal type for a field – Useful for adding code or breakpoints when getting/setting a field

Properties – examples type PropertyName { get; set; } Examples int Score { get; set; } double Time { get; private set; } string Name { get; } Code examples – person.cs (see course calendar for link) – abstractshape.cs (see course calendar for link) –

Methods (a.k.a. functions) All code executes in a method – Constructors, destructors and operators are special types of methods – Properties and indexers are implemented with get/set methods Methods have argument lists Methods contain statements Methods can return a value

Modifiers Public – Accessible anywhere Protected – Accessible within its class and by derived class instances Private – Accessible only within the body of the class – (Or anywhere if you use reflection)reflection Static – Belongs to the type Instance – Belongs to the instance

Static field example public class Variable { public static int i = 5; public void test() { i=i+5; Console.WriteLine(i); } public class Exercise { static void Main() { Variable var = new Variable(); var.test(); Variable var1 = new Variable(); var1.test(); Console.ReadKey(); } Output is: 10 15

CONVERSION

Can also specify user-defined explicit and implicit conversions internal class Note { private int value; // Convert to hertz – no loss of precision public static implicit operator double(Note x) { return...; } // Convert to nearest note public static explicit operator Note(double x) { return...; } Note n = (Note) ; double d = n; Conversion operators

The is Operator The is operator is used to dynamically test if the run-time type of an object is compatible with a given type private static void DoSomething(object o) { if (o is Car) ((Car)o).Drive(); }

The as Operator The as operator tries to convert a variable to a specified type; if no such conversion is possible the result is null More efficient than using is operator – Can test and convert in one operation private static void DoSomething(object o) { Car c = o as Car; if (c != null) c.Drive(); }

Java to C# resources Java for C# developers – fairly brief syntax and terminology differences Java for C# developers The C# Programming Language for Java Developers – documentation of language differences organized by programming constructs The C# Programming Language for Java Developers Additional Suggestions from StackOverflow

VS 2012 and XNA demo