applied object oriented programming › slides › 02.pdf · operator overload vu, mif, programų...

50
Applied object oriented programming Operators and type systems

Upload: others

Post on 08-Jun-2020

7 views

Category:

Documents


0 download

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