OOP
OOP įįᯠįįį¼į±į¬įįįŗ į”įįįŗį Program įį½į±
Ok bro... OOP įįᯠįįį¼į±į¬įįįŗį į”įįįŗį program įį½į± įįįŗįįᯠįį±įøįį¼įį² į įįŗįøį į¬įøįį¼įį·įŗį
į”įįįŗ style (įį°į·įįᯠProcedural Programming įįįÆį·įį±į«įŗįįįŗ) į įįįŗįįįÆįį²įįįÆįį±į¬į·į įįįÆįįŗ įįÆįįŗįį»įįŗįį¬įį½į±įįᯠstep-by-step įį»įį±įøįį¬į Function įį½į± į”įį»į¬įøįį¼į®įø įį įŗįį±įį¬įį¾į¬ į įÆįį±įøį įį¼į®įøįį±į¬į· data (variable) įį½į± į”įį»į¬įøįį¼į®įø įį įŗįį±įį¬įį¾į¬ į įÆįį¬įøį į”įįÆįįŗįįÆį¶įøį Global įį¼į įŗįį±įį¬į
- įį¼įæįį¬į įį¬įį²? Program į įįįŗįøįįįŗįøįį±įø įį¼į®įøįį¬įį¬įį²į·... įį¾įÆįįŗįį½ įį½į¬įøįį¬įį²į
- įįįŗ function į įįįŗ data įįᯠįįÆį¶įøįį±įį¾įįŗįø įįįįį±į¬į·įį°įøį
- įį įŗįįÆįᯠįį¼įįŗįį»įįŗįįįŗį įįįÆįį¬įøįįįÆįįŗįį¼įįŗį įį®įį¬įøįįįÆįįŗįį¼įįŗ... įįÆįįŗįį½į± įįįŗįį»į¬įįįŗ (spaghetti code) įį½į± įį¼į įŗįįÆįįŗįį±į¬į
į”į²į·įį®įį¾į¬ OOP į įįįŗįį¬įį¬
OOP (Object-Oriented Programming) į įį¬įį¼į±į¬įį²įįįÆįį±į¬į·...
įį±į· broį į”į²į·įįįÆįį½į± įįį¾įÆįįŗįį²į·į į”įįÆįįŗįįįÆįįŗ įį²į·į įįįÆįįŗįᬠįįįÆįįŗįᬠdata įį²į· į”į²į· data įįᯠįįį įįį·įŗ function įį½į±įįᯠįį įŗįį±įį¬įįįŗįøįį¾į¬ į įÆįįįÆįįŗį
į”į²į·įįᯠdata įį±į¬į function įį±į¬ įį±į«įįŗįøįį¼į®įø į įÆįį¬įøįį²į· į”įįÆįįŗ (bundle) įį±įøįįᯠObject įįįÆį·įį±į«įŗįįįŗį
į”įįį Idea įį¾į įŗįįÆ: Class įį²į· Object
1. Class (įįÆį¶į į¶įį½įįŗ)
- įį«į įįÆį¶į į¶ įį®įįįÆįįŗįøįį²į
- į„įįį¬į įį¬įø (Car) įįįÆįį²į· įįÆį¶į į¶įį½įįŗ įį įŗįᯠįį±į¬įįŗįįįÆįįŗįįįŗį
- į”į²į·įį® įįÆį¶į į¶įį½įįŗįį² įį¬įø įį įŗį į®įøįį¾į¬ įį¬įį½į± įį¾įįįįį² (Data/Attributes) įį²į·į įį°į įį¬įį½į± įįÆįįŗįįįÆįįŗįįįį²(Functions/Methods) įįįÆįį¬įį½į± įį¼įįÆįį±įøįį¬įøįį¬į
# Data (Attributes):
color, brand, model, current_speed
(į”įį±į¬įįŗį įį¶įįįįŗį įį±į¬įŗįįįŗį įįįŗįį¾įį”įį¼įįŗįį¾įÆįįŗįø)
# Functions (Methods):
start(), stop(), accelerate(), brake()
(į
įįŗįį¾įįÆįøį į
įįŗįįįŗį įį®įį¬įįįŗį įįįįįŗį”įÆįįŗ)2. Object (į”į į įŗį”įį¾įįŗ)
- įį«į į”į²į·įį® įįÆį¶į į¶įį½įįŗ (Class) įįį± įįįįŗ įįÆį¶įį° įįÆįįŗįįįÆįįŗįį²į· į”įᬠį”į į įŗį
- Class į
CarįįįÆįįįŗ...
# Object įį
įŗįįÆ
my_toyota = Car() (įį»įį±į¬įŗį· Toyota įį¬įø)
# įį±į¬įįŗįįįŗ Object įį
įŗįįÆ
bros_honda = Car() (bro įį²į· Honda įį¬įø)
įį¬įø įįÆį¶į
į¶įį½įįŗ (Car class) į įį
įŗįįÆįįįŗįøį įį«įį±įįį·įŗ į”į²į·įįį± įįÆįįŗįįįÆįįŗįį²į· įį¬įø į”į
į
įŗ (Object) įį½į±į į”įį»į¬įøįį¼į®įø įį¼į
įŗįįįÆį·įįįįŗį my_toyota įį²į· color į į”įį®į bros_honda įį²į· color į į”įįįŗįø įį¼į
įŗįįįÆį·įįįįŗį įį
įŗį
į®įøįį²į· įį
įŗį
į®įø įįį±į¬įį°įøį
įį¬įįįÆį· įįÆį¶įøįįį¾į¬įį²?
Ok, įį¬įį² įįįÆįᬠįįįį¼į®į įį¬įįįÆį· įįÆį¶įøįį¾į¬įį²į
1. įį¾įįŗįøįįįŗį į įį įŗįįį» įį¼į įŗįį½į¬įøįįįŗ (Organized)
įįÆįįŗįį½į± įį¾įÆįįŗįįį±įį±į¬į·įį°įøį įį¬įø įį²į· įįįŗįįįŗįį²į· data įį±į¬į function įį±į¬ į”įįÆįįŗ Car class įį²įį¾į¬įį² į
įÆįį¬įøįįįŗį įį° (User) įį²į· įįįŗįįįŗįᬠUser class įį²įį¾į¬įį²į įįįÆįį·įŗįį¬įį²į· įįįÆįįŗ į”įįį·įŗ (module) įį±įøįį½į± įį¼į
įŗįį½į¬įøįįįŗį įį¾į¬į įį½įįŗįįįŗį įį¼įįŗį įį½įįŗįįįŗį
2. įį įŗįį«įįįŗįøįį²į· įį¼į®įøįįįŗ (Reusability)
Car class įįᯠįį
įŗįį«įį² įįįŗįįįŗįøįį¶ įį±įøįįįÆįįŗį įį¼į®įøįįįŗ... įį¬įø į”į
į®įø įįįį įįįÆįį»įįŗįį¬įø? Object į”įᯠįįįį įįįŗįø įį±į¬įįŗ (create) įįįÆįįŗį code įį½į± įįįŗįį«įįįŗįį« įį¼įįŗįį±įøįį±į
įᬠįįįįÆįį±į¬į·įį°įøį
įį«įį²įįįÆįįŗįį±įøįį°įø... Inheritance (į”įį½į±įįįŗįį¶įį¼įįŗįø) įįįÆįᬠįį¾įįį±įøįįįŗį Car class įįᯠį”įį½į±įį°įį¼į®įø SportsCar class įį±į¬įįŗįįįÆį·įįįįŗį SportsCar įį¾į¬ Car įį²į· start(), stop() įį½į± į”įįÆįįŗ įį«įį¬įįįŗį įįįÆįįŗį turbo() įįįÆįį²į· function į”įį
įŗįį±įøįį² įįįÆįįį·įŗįįįÆįįŗįįÆį¶įį²į
3. įį½įįŗįį¬įøįįįÆį·įįįįŗ (Encapsulation)
įį»įį±į¬įŗįįįÆį· įį¬įøįį±į¬įįŗįøįįįŗ įį®įᬠ(accelerator) įįᯠįįįŗįøįįįÆįįŗįį¬įį² įįįįįŗį į”įį²į įį į¹į įįįŗ (piston) įįįŗįįįÆįį½į±į·įį²į įį® įįįŗįįᯠįįįŗįøįį²... įįį įį¬įįįįÆįį°įøį
OOP įį¾į¬įįįŗįø į”į²į·įįįÆįį²į Object įįᯠmy_car.accelerate() įįįÆį· įį±į«įŗįįįÆįįŗįį¬įį²į· įį°įį¬įį° į”įįÆįįŗįįÆįįŗįį½į¬įøįįįŗį į”įį²į į”įį½įįŗįøį
įį
įŗ (internal details) įį½į±įįᯠįįįÆįįŗįįįį±į
įį¬į įįįÆįįŗįį¼įįŗįį±į
įᬠįįįįÆįį°įøį įį«įįᯠEncapsulation (įįÆį¶įøįį½įįŗįį¬įøįį¼įįŗįø) įįįÆį·įį±į«įŗįįįŗį įį«įį¼į±į¬įį·įŗ įįįÆįį·įŗ code įįᯠįįį¼į¬įøįį°į įįį±į¬įŗįį įᬠįįį įįįÆį· įį»įįŗįį½į¬įøįį¾į¬ įį°į
įį¬įįįįÆįį±į¬į·įį°įøį
4. įį¼įįŗį įį½įįŗįįįŗ (Maintainability)
Project įį¼į®įøįį¬įį²į·į”įį«... įį¬įø įįįįįŗį”įÆįįŗįį²į· įįÆį¶į į¶įįᯠįį¼įįŗįį»įįŗįįįŗ įįįÆįį«į įįÆį·į
- į”įįįŗ style (Procedural) įį¾į¬: code įį½į± į”įį»į¬įøįį¼į®įøįį²įį¾į¬ įįįŗįį¬įøį įįįįįŗį”įÆįįŗįį²į· function įį² įįįÆįįŗįį¾į¬įįįįŗį įį±įį¬į”įį¾į¶į·įį¾į¬ įįįŗįįįŗįį±įį¬įį½į± įįįÆįįŗįį¼įįŗįįįįŗį
- OOP įį¾į¬:
Carclass įį²įbrake()method įį įŗįįÆįįįŗįøįįįÆįį² įįįŗįį¼įįŗįįįÆįįŗį įį¼į®įøįį¼į®į įį»įįŗįį²į· įįįŗįį±įį¬įįįÆįį¾ įį½į¬įøįįįįį°įøį
į”įį¾į įŗįį»įÆįįŗ
įįįįŗįį±į¬į· OOP įįįÆįᬠcode įį½į±įįᯠį įį įŗįįį» įį²į· įį¾įÆįįŗįįį½į¬įøį”į±į¬įįŗ įį±įøįį²į· vibe įį įŗįįÆįį«įį²į
Program įį±įøįį±įøįį±įøįį½į± įį±įøįįįŗįį±į¬į· OOP į į”įįᯠįįįÆį· įįįŗįįįįŗį įį«įį±įįį·įŗ bro įįįÆį· project įį½į± įį¼į®įøįį¬įį±... (į„įįᬠįįįįŗįøįį½į±į app įį¼į®įøįį½į±) OOP įįįÆį¶įøįįįŗ į”į®įøįįįŗ įįįÆįįŗįį±įį±įį²į