Object-Oriented Programming & Ruby

29
< StartupDecode workshop : #02 /> Object Oriented Programming with Ruby Amine Sadry @donaminos www.startupdecode.com @startupdecode /startupDecode /user/startupDecode meetup.com/startupDecode

description

Object-Oriented Programming & Ruby

Transcript of Object-Oriented Programming & Ruby

Page 1: Object-Oriented Programming & Ruby

< StartupDecode workshop : #02 />

Object Oriented Programming with Ruby

Amine [email protected]

@startupdecode /startupDecode /user/startupDecodemeetup.com/startupDecode

Page 2: Object-Oriented Programming & Ruby

< Program />

1. What is Programming ?

2. OOP Principle

3. Hands-on Ruby

4. Encapsulation

5. Inheritance

6. polymorphism

7. Apéro Networking

www.startupdecode.com

Page 3: Object-Oriented Programming & Ruby

What is programming?

Page 4: Object-Oriented Programming & Ruby

< Machine language />

www.startupdecode.com

Page 5: Object-Oriented Programming & Ruby

< Assembler language />

www.startupdecode.com

2000 DEF PROCasm(pass,org)2010 P%=org2020 [ OPT pass2030 ADR R0, message2040 SWI OS_Write02050 MOV PC, R142060 .message2070 EQUS "Hello, World!" + CHR$(0)2080 ALIGN2090 ]2100 ENDPROC

1000 REM Hello World using a mix of BBC Basic and ARM assembler1010 DIM org 1001020 OS_Write0 = &21030 FOR pass=0 TO 3 STEP 31040 PROCasm(pass,org)1050 NEXT pass1060 CALL org1070 END1080

Page 6: Object-Oriented Programming & Ruby

< High-level language />

www.startupdecode.com

void main (void) {

printf ("Hello \n");

if ( x == y ) printf("x equal y \n");

}

101001100101000111100101

Compile

Page 7: Object-Oriented Programming & Ruby

< Procedural programming />

www.startupdecode.com

main(){

var data1, data2;

procedure_1();

procedure_2(data1);

procedure_3(data1, data2);

print data2;}

procedure_1(){...

} procedure_2(param){

….

}

procedure_3(p1, p2){….

}

Page 8: Object-Oriented Programming & Ruby

Object Oriented Programming

Page 9: Object-Oriented Programming & Ruby

< OOP principle 1/3 />

www.startupdecode.com

Properties:● Brand● Color

Actions:● Strart● Accelerate● Stop

Page 10: Object-Oriented Programming & Ruby

< OOP principle 2/3 />

www.startupdecode.com

Properties:● Name● Email● …

Actions:● Move● Text● …

Page 11: Object-Oriented Programming & Ruby

< OOP principle 3/3 />

www.startupdecode.com

Attributes

Methods

Class

Page 12: Object-Oriented Programming & Ruby

Hands-on Ruby

Page 13: Object-Oriented Programming & Ruby

< Classes & objects />

www.startupdecode.com

class User...

endme = User.new

puts me.class

puts me.object_id

Create a class Create an object Get object info

Page 14: Object-Oriented Programming & Ruby

< Ruby code />

www.startupdecode.com

Page 15: Object-Oriented Programming & Ruby

Encapsulation

Page 16: Object-Oriented Programming & Ruby

< Encapsulation 1/2 />

www.startupdecode.com

class User

def name(name)@name = name

end

def name@name

end

end

Page 17: Object-Oriented Programming & Ruby

< Ruby code />

www.startupdecode.com

Page 18: Object-Oriented Programming & Ruby

< Encapsulation 2/2 />

www.startupdecode.com

class User

def set_name(name)@name = name

end

def get_name@name

end

end

class User

attr_reader :name

attr_writer :name

end

class User

attr_accessor :name

end

Page 19: Object-Oriented Programming & Ruby

< Ruby code />

www.startupdecode.com

Page 20: Object-Oriented Programming & Ruby

Inheritance

Page 21: Object-Oriented Programming & Ruby

< Inheritance />

www.startupdecode.com

B

A

C

A A

Page 22: Object-Oriented Programming & Ruby

< Inheritance />

www.startupdecode.com

class User

attr_accessor :name

def login“I logged in!”

end

def logout“I logged out!”

end

end

class Freelance < Userdef add_resume “I added a resume!”end

end

class Entreprise < Userdef add_offer “I added an offer!”end

end

Page 23: Object-Oriented Programming & Ruby

< Ruby code />

www.startupdecode.com

Page 24: Object-Oriented Programming & Ruby

Polymorphism

Page 25: Object-Oriented Programming & Ruby

< Polymorphism />

www.startupdecode.com

B

A

C

A’ A”

Page 26: Object-Oriented Programming & Ruby

< Polymorphism />

www.startupdecode.com

class Userdef login “I logged in!”end

def logout “I logged out!”end

def signup“Basic signup!”

endend

class Freelance < User

def add_resume “I added a resume!”end

def signup “Free to signup!”end

end

Page 27: Object-Oriented Programming & Ruby

< Polymorphism />

www.startupdecode.com

class Userdef login “I logged in!”end

def logout “I logged out!”end

def signup“Basic signup!”

endend

class Entreprise < User

def add_offer “I added an offer!”end

def signup“100$ to signup!”

end

end

Page 28: Object-Oriented Programming & Ruby

< Ruby code />

www.startupdecode.com

Page 29: Object-Oriented Programming & Ruby

< StartupDecode />

@startupdecode /startupDecode /user/startupDecodemeetup.com/startupDecode

Next workshop:HTML 5

A bientôt