Skip to content

The implementation of OOP concepts in many programming languages, so "less talk more code"

License

Notifications You must be signed in to change notification settings

projeduc/oop4coders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Object-oriented programming for coders

Project Book License Codes License GitHub release Github All Releases Github Release

Object-oriented programming (OOP) is one of the most popular programming paradigms. It is originated from the theory of concepts, and models of human interaction with real world phenomena. The four main concepts forming OOP are: abstraction, encapsulation, inheritance and polymorphism. There exists a lot of references talking about OOP and explaining its concepts. So if you want to go deeper in this paradigm, this is not the book you are looking for. But, still, you can grasp some ideas about these concepts by observing how programming languages are dealing with them.

In this book, the focus will be OOP from programmers' point of view. That is, the concepts will be presented as concrete programs with different OOP languages. Some programming languages are pure object-oriented such as Ruby, others allow primitive types such as Java, then there are those which skip some concepts such as Python with encapsulation, and those which have other ways to support OOP such as Javascript. This book serves as a comparison between different implementations of OOP concepts afforded by some programming languages. If a language lake support of a given concept, some solutions and hacks can be afforded. The explanations will be as short and informative as possible allowing more space to show all the beauty of codes.

So, "Less talking, more coding"

Why should you be interested?

Back in 2016, I presented the idea of this book on social media seeking some insights, suggestions and of course contributors. Well, the idea was not a success: no one cared to respond. One of my friends (Adnan) has finally asked me a good question: "What will be the difference between your book and the huge number of already written books on this matter?". Maybe I did not present the idea well enough that time; but any book has to outline why its future readers should be interested. So, here are some outlines of what this book is about, and what difference it makes from others:

  • It is intended to be FREE (as gratis); no one will loose money for it.

  • It is open source; anyone can help enhancing this book. You can translate, correct, add a programming language, make your own copy from it as long as you mention the contributors and license it under CC-BY-SA 4.0.

  • It is intended to be a manual or a guide through different programming languages. So, no one will loose their time reading it; they will read it because they want to explore how a language handles a certain OOP concept. For instance, if someone wants to know if Javascript has private members, they will go directly to encapsulation chapter, private members section.

  • To my knowledge, this is the first attempt to gather different implementations of OOP concepts by as many languages. The available books and sources interested in OOP, mostly, use one programming language to illustrate OOP's four concepts. Others are books interested in a certain language and presenting OOP as a chapter. You can find the different implementations, but I doubt you will be able to find them on the same support.

  • It is helpful when someone wants to compare the differences between the object oriented languages. If they want to know what are the limits and workarounds of a programming language about some OOP concept, this is what this book is about.

Download

Download the latest version from HERE. There are two files:

  • oop4coders_book_version.pdf : The book in pdf format
  • oop4coders_codes_version.zip : The codes

License

Copyright (C) 2016-2018 Abdelkrime Aries

This project has two different licenses: the codes and the book.

Codes' license

The codes, present in here, including latex files. Licensed under MIT license.

Book's license

The book is licensed under Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)

You are free to:

  • Share — copy and redistribute the material in any medium or format
  • Adapt — remix, transform, and build upon the material for any purpose, even commercially.

The licensor cannot revoke these freedoms as long as you follow the license terms.

Under the following terms:

  • Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
  • No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.