Skip to content

darkn3rd/oop-tut

Repository files navigation

Object-Oriented-Programming Tutorial

© 2016 by Joaquín Menchaca

Overview

Welcome to my material for tutoring OOP concepts. This material covers popular class-based invocation-oriented OOP that was popularized by languages like: C++, Objective-C, C#, and Java programming languages.

Then see how these concepts are applied in inspection-oriented OOP languages like Groovy, Python, and Ruby.

Experimentation

I am working on seeing how these concepts can be applied to prototype-based OOP language of JavaScript, and related alternatives of Dart, CoffeeScript, and TypeScript. These are currently (Dec 15, 2014) under experimentation, as JavaScript is a little tricky.

Future

After this, I may dabble with languages like Go, Rust, and Swift.

Last Update: December 15th, 2014

Installation

Currently I am working on a cumulative installation guide called Objective Box:

Topics

These are the topics ironed out so far (still under development)

Part I Introduction

This is a simple Person class and object with a method that says "HelloWorld".

  • 📚 Class and Object
    • 📗 Class Declaration and Class Method (A00)
    • 📗 Object Instantiation and Instance Method (A10)
  • 📚 Class Variable and Object Variable
    • 📗 Class Variable (B00)
    • 📗 Instance Variable (B10)

Part II Mechanics

This uses a Person and Student metaphor, where Student is a type of a Person.

  • 📚 Encapsulation and Access
    • 📗 Accessors and Mutators (C00)
    • 📗 Properties (C10)
    • 📗 Overloading Methods (C20)
    • 📗 Methods Variable Parameters (C30)
  • 📚 Construction (Initialization)
    • 📗 Constructor (D00)
    • 📗 Constructor with parameters (D10)
    • 📗 Destructor (D20)
  • 📚 Overloading Constructors
    • 📗 Single Constructors (E00)
    • 📗 Multiple Constructors (E10)
    • 📗 Delegated Constructor (E20)
    • 📗 Dynamic Constructor (E30)
  • 📚 Class Variables
    • 📗 Class Method (F00)
  • 📚 Immutability
    • 📗 Immutable Fields (G00)
  • 📚 Inheritance
    • 📗 Parent Methods (H00)
    • 📗 Parent Fields (H10)
    • 📗 Parent Constructor (H20)

Part III

This uses an abstract Shape and concrete Triangle and Rectangle to illustrate concepts in this section.

  • 📚 Overriding
    • 📗 Override Methods (I00)
  • 📚 Abstraction
    • 📗 Abstract Methods (J00)
  • 📚 Interface
    • 📗 Interface Methods (K00)

Future Sections

There are some other components that are not touched yet, but may add them later. This includes operator overloading, copy constructors, type casting, templates, metaprogramming. A few designated targets include:

  • 📚 MixIns (K00)
  • 📚 Sealing (L00)
  • 📚 Freezing (M00)

Status

I am making a ad-hoc task list TASK.MD to track my research and activities of this project.