Post on 02-Jul-2015
description
< 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