Object-Oriented Programming & Ruby

Post on 02-Jul-2015

351 views 3 download

description

Object-Oriented Programming & Ruby

Transcript of Object-Oriented Programming & Ruby

< StartupDecode workshop : #02 />

Object Oriented Programming with Ruby

Amine Sadry@donaminoswww.startupdecode.com

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

< 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

What is programming?

< Machine language />

www.startupdecode.com

< 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

< High-level language />

www.startupdecode.com

void main (void) {

printf ("Hello \n");

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

}

101001100101000111100101

Compile

< 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){….

}

Object Oriented Programming

< OOP principle 1/3 />

www.startupdecode.com

Properties:● Brand● Color

Actions:● Strart● Accelerate● Stop

< OOP principle 2/3 />

www.startupdecode.com

Properties:● Name● Email● …

Actions:● Move● Text● …

< OOP principle 3/3 />

www.startupdecode.com

Attributes

Methods

Class

Hands-on 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

< Ruby code />

www.startupdecode.com

Encapsulation

< Encapsulation 1/2 />

www.startupdecode.com

class User

def name(name)@name = name

end

def name@name

end

end

< Ruby code />

www.startupdecode.com

< 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

< Ruby code />

www.startupdecode.com

Inheritance

< Inheritance />

www.startupdecode.com

B

A

C

A A

< 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

< Ruby code />

www.startupdecode.com

Polymorphism

< Polymorphism />

www.startupdecode.com

B

A

C

A’ A”

< 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

< 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

< Ruby code />

www.startupdecode.com

< StartupDecode />

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

Next workshop:HTML 5

A bientôt