programming_general:object-orientation_fundamentals_slides
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
programming_general:object-orientation_fundamentals_slides [2020/09/14 00:30] – mithat | programming_general:object-orientation_fundamentals_slides [2021/11/28 19:14] (current) – [Object-oriented languages] mithat | ||
---|---|---|---|
Line 1: | Line 1: | ||
~~SLIDESHOW~~ | ~~SLIDESHOW~~ | ||
====== Object-Orientation Fundamentals ====== | ====== Object-Orientation Fundamentals ====== | ||
+ | Mithat Konar | ||
===== Why object-orientation? | ===== Why object-orientation? | ||
* **Object-oriented programming** came about to support **object-oriented analysis and design** (OOAD). | * **Object-oriented programming** came about to support **object-oriented analysis and design** (OOAD). | ||
* OOAD created to solve issues involved in designing and managing large applications. | * OOAD created to solve issues involved in designing and managing large applications. | ||
- | ===== Procedural/structured programming | + | ===== Procedural thinking ===== |
- | * What needs to happen? | + | * Break down large problems into functions or procedures. |
- | * Focus on creating a set of functions to do the things that need to get done. | + | * //What needs to happen?// |
* " | * " | ||
- | ===== Object-thinking ===== | + | ===== Object-oriented |
- | * What are the components (objects) that make up the problem? | + | * Break down large problems into the components (objects) that make up the problem. |
* How do they behave? | * How do they behave? | ||
- | * How do the components | + | * How do they interact? |
* " | * " | ||
===== Object-oriented languages ===== | ===== Object-oriented languages ===== | ||
* Possible to implement OOAD in any language. | * Possible to implement OOAD in any language. | ||
- | * Much easier | + | * Easier |
===== Object-oriented concepts ===== | ===== Object-oriented concepts ===== | ||
Line 51: | Line 51: | ||
===== Encapsulation ===== | ===== Encapsulation ===== | ||
- | * Consider: | + | * User changes the state of the oven only by engaging one or more of the operations in the oven’s interface. |
- | * One changes the state of the oven only by engaging one or more of the operations in the oven’s interface. | + | * Don’t need to know how a magnetron, the clock’s electronics, |
- | * You don’t need to know how a magnetron, the clock’s electronics, | + | * Only need to know what changes in state to expect from the “cook 1 minute” or “add 30 seconds” operations. |
- | * You only need to know what changes in state to expect from the “cook 1 minute” or “add 30 seconds” operations. | + | * “I don’t care about how it works—I only need to know what it does,” is part of **encapsulation**. |
- | * “I don’t care about how it works—I only need to know what it does,” is part of **encapsulation**: “to place in a capsule.” | + | |
===== Protection ===== | ===== Protection ===== | ||
Line 70: | Line 69: | ||
* **object**: a program entity that encapsulates state (via attributes) and behavior (via operations involving those attributes) for some meaningful abstraction. | * **object**: a program entity that encapsulates state (via attributes) and behavior (via operations involving those attributes) for some meaningful abstraction. | ||
+ | ===== Class-based object-orientation ===== | ||
+ | |||
+ | * My Farberware 4241 microwave.\\ | ||
+ | {{: | ||
+ | * All Farberware 4241s made from a master plan. | ||
+ | * Defines what the Farberware 4241 //is//. | ||
+ | * In computing terminology, | ||
+ | * A class contains all the specifications needed to make a particular kind of object. | ||
+ | |||
+ | ===== Class-based object-orientation ===== | ||
+ | |||
+ | * Objects that have been created from classes are also called **instances**. | ||
+ | * The process of creating an instance from a class definition is called **instantiation**. | ||
+ | |||
+ | ===== Prototype-based object-orientation ===== | ||
+ | * **Prototype-based object-orientation**: | ||
+ | * Currently less common than class-based OOP. | ||
programming_general/object-orientation_fundamentals_slides.1600043443.txt.gz · Last modified: 2020/09/14 00:30 by mithat