Top Banner
Applied object oriented programming Operators and type systems
50

Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Jun 08, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Applied object orientedprogramming

Operators and type systems

Page 2: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Today

• .NET history

• Operators in .NET

• Loops

• Type systems

Page 3: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

.NET history

VU, MIF, Programų sistemų katedra

Page 4: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

VU, MIF, Programų sistemų katedra

Page 5: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Code "conversion"

VU, MIF, Programų sistemų katedra

Page 6: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

.NET Core

• Cross-platform .NET development platform

• Runs on windows/macOS/linux

• Open source https://github.com/dotnet/core

• Languages that can be used with: C#, F# and VB

• Still new*, so it is changing a lot

• .NET Core 3.0 is scheduled for September 2019

* RC released late 2015, stable – mid 2016

VU, MIF, Programų sistemų katedra

Page 7: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

.NET Core vs .NET.NET .NET Core

Cross-platform - +

Windows forms + + (only Win)

WCF services + -

WPF + + (only Win)

Lightweight with containers

- +

VU, MIF, Programų sistemų katedra

Page 8: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Which framework should you choose?

• Depends on your needs:• Is it important for you to have cross-platform application?

• Do you want to use containers

• Depends on available external packages:• Before choosing framework – do analysis on existing packages that you will

need to use for assignments.

• Course recommendation: .NET framework + .NET Core framework

VU, MIF, Programų sistemų katedra

Page 9: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Arithmetic operators

• A = 10; B = 20

VU, MIF, Programų sistemų katedra

Page 10: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Comparison operators

VU, MIF, Programų sistemų katedra

Page 11: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Logical operators

• Short-circuit evaluation: look in and.csA = True, B = False

VU, MIF, Programų sistemų katedra

Page 12: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

VU, MIF, Programų sistemų katedra

Page 13: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Binary operators (1)

• A = 0011 1100

• B = 0000 1101

• -----------------

• A&B = 0000 1100

• A|B = 0011 1101

• A^B = 0011 0001

• ~A = 1100 0011

VU, MIF, Programų sistemų katedra

Page 14: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Binary operators (2)

• A = 60 (0011 1100), B = 13 (0000 1101)

VU, MIF, Programų sistemų katedra

Page 15: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Assignment operators

VU, MIF, Programų sistemų katedra

Page 16: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Syntax sugar• Syntax sugar

• Simple as +=

• Get/Set changed to property

• Type inference, as example.

• Syntax salt• „break“ usage inside „switch“

• When hiding inherited method, must use „new“

• Designed to prevent one from writing bad code

VU, MIF, Programų sistemų katedra

Page 17: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Syntactic saccharin

• Gratuitous syntax that does not make programming any sweater :)

VU, MIF, Programų sistemų katedra

Page 18: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

var• int i = 10;

• Explicit definition

• var i = 10;• Implicit definition

• Implicit type can be:• int, bool, etc.

• Anonymous type

• User defined type

• .NET class

VU, MIF, Programų sistemų katedra

Page 19: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Ternary operator

• condition ? value if true : value if false

VU, MIF, Programų sistemų katedra

Page 20: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Operator overload

VU, MIF, Programų sistemų katedra

• Word „operator“ and the operator sign.

• Specific heading (look operatorOverload.cs)

• More on: Overloadable Operators, MSDN

public static Box operator +(Box b, Box c)

Operator Description

+, -, !, ~, ++, --, true, false Can be overloaded (unary)

+, -, *, /, %, &, |, ^, <<, >> Can be overloaded (binary)

==, !=, <, >, <=, >= Can be overloaded

&&, || Cannot do it simple way

+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= Cannot do it simple way

=, ., ?:, ??, ->, =>, f(x), as, checked, unchecked,

default, delegate, is, new, sizeof, typeofCannot do it

Page 21: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Null-coalescing operator

Answer = Answer1 ?? Answer2 ?? Answer3 ?? Answer4;

Syntactic sugar:

VU, MIF, Programų sistemų katedra

Page 22: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

switch• int and string types (before c# 8)

• Break is a must:

VU, MIF, Programų sistemų katedra

Page 23: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

switch expressions (c# 8)

Page 24: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Switch expressions (c# 8) (2)

• Property pattern – switch to filter on specific property;

• Tuple pattern – switch to filter on more than one property;

• Positional pattern – using deconstruct

• More to read - https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8#switch-expressions

Page 25: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Cycles: for and foreach

VU, MIF, Programų sistemų katedra

Page 26: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

While and do-while

VU, MIF, Programų sistemų katedra

Page 27: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Types• Value types

• Reference types

• Pointer types

VU, MIF, Programų sistemų katedra

Page 28: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Demo time

Page 29: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Types• Ref vs value

VU, MIF, Programų sistemų katedra

Page 30: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading
Page 31: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Value types

• Enumerations

• Structs (all below „under the hood“ is struct):• Numeric types

• Integral types

• Floating-point types

• decimal

• bool

• User defined structs

VU, MIF, Programų sistemų katedra

Page 32: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Value types

VU, MIF, Programų sistemų katedra

Page 33: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Value types

• GetType:

VU, MIF, Programų sistemų katedra

Page 34: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Formating numeric typesSymbol Definition Example Result

C or c Currency Console.Write("{0:C}", 2.5);

Console.Write("{0:C}", -2.5);

$2.50

($2.50)

D or d Decimal Console.Write("{0:D5}", 25); 00025

E or e Scientific Console.Write("{0:E}",

250000);

2.500000E+005

F or f Fixed-point Console.Write("{0:F2}", 25);

Console.Write("{0:F0}", 25);

25.00

25

G or g General Console.Write("{0:G}", 2.5); 2.5

N or n Number Console.Write("{0:N}",

2500000);

2,500,000.00

X or x Hexadecimal Console.Write("{0:X}", 250);

Console.Write("{0:X}", 0xffff);

FA

FFFF

VU, MIF, Programų sistemų katedra

Page 35: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Type system

VU, MIF, Programų sistemų katedra

Page 36: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Type system

VU, MIF, Programų sistemų katedra

Page 37: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Enum

• Value type, an enumeration, a distinct type that consists of a set ofnamed constants called the enumerator list

• Has:• Name,

• Hidden integer type• e.g. Byte, Int32 ar UInt64,

• A set of fields

VU, MIF, Programų sistemų katedra

• Cannot:

– Have methods

– Implement interfaces

– Define properties orevents

– Be generic

Page 38: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Enum

VU, MIF, Programų sistemų katedra

Page 39: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Enum

• Hidden type – int

• Starts with 0:

• Another way:

• Look:• enum2.cs

VU, MIF, Programų sistemų katedra

Page 40: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Enum

VU, MIF, Programų sistemų katedra

Page 41: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Struct• Value type

• Defines:• Data

• Operations on data

• Possible to do:• Create an instance

• Pass them as parameters

• Save as local types

• Have it as a field inside both – reference and value types

• Struct can implement and interface.

VU, MIF, Programų sistemų katedra

Page 42: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Struct

• Has:• Fields

• Methods (incl. Constructor)

• Properties

• Operators

• Events

• Delegates.

VU, MIF, Programų sistemų katedra

Page 43: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading
Page 44: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading
Page 45: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Struct: diff from class• Value vs reference

• Struct cannot be null

• Class is to be used for larger objects.

• Classes can be inherited, structs - cannot.

• Struct does not have destructor

• Struct cannot be abstract

• In struct you can override only these:• Equals()

• GetHashCode()

• GetType()

• ToString() – look operatorOverload.cs

VU, MIF, Programų sistemų katedra

Page 46: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Struct: diff from class• Events in classes are automatically locked and thread-safe,

while in structs - not thread-safe.

• Struct cannot have volatile

• Sizeof does not work with classes

• Field inicialization inside:

VU, MIF, Programų sistemų katedra

Instructs compiler not to change (optimize)

assigments of variables

Page 47: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Struct: diff from class

• Struct cannot have not empty constructor without params

• Static constructor works only with classes, look. struct3. cs

• Equals is behaving differently. Struct4.cs

For more:

-property.cs

-book.cs

VU, MIF, Programų sistemų katedra

Page 48: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Literature

• Basics:

• MCSD sertification toolkit: second chapter, ahalf of the third chapter

• MSDN: Operator Overloading Tutorial

• Extra: nullable types (highly recommended!)

• http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx

• http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx

• Extra-extra:

• Decimal floating point in .NET. C# in Depth. (on web).

VU, MIF, Programų sistemų katedra

Page 49: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Next time

• Guests – last year best team will present their application!

• Three main OOP pillars:• Encapsulation

• Inheritance

• Polymorphism

• Demo of creating a web service using .Net Core

• Guests - GIT

Page 50: Applied object oriented programming › slides › 02.pdf · Operator overload VU, MIF, Programų sistemų katedra •Word „operator“ andthe operator sign. •Specific heading

Questions

VU, MIF, Programų sistemų katedra