What is object-oriented programming? Fundamental concepts of OOP

Object-oriented programming or OOP is programming model based on the concepts of "objects", which are data structures that contain data, in the form of fields, and code, in the form of methods. In addition, programmers can create relationships between objects. For example, objects can inherit data and methods from other objects. Program, designed with OOP approach, is maked of objects that interact with one another. Most popular languages have class-based OOP, meaning that objects are instances of classes, which typically also determines their type.

What is prototype-based OOP?

Prototype-based programming is a style of object-oriented programming in which inheritance is implemented via process of cloning existing objects that serve as prototypes. There are two methods of constructing new objects: object creation "from nothing" or through cloning an existing object.

What is inheritance? Types of inheritance

Inheritance represents the relationship between two objects or two classes where one derives functionality from another and then extends it by adding new fields, properties or methods. It is one of the fundamental concepts of the object-oriented programming along with polymorphism, abstraction and encapsulation. Inheritance allows classes to inherit commonly used state and behavior from other classes, so it is one of the main tools of code reuse in OOP.

What is software library?

A library is a reusable set of code which software developer can use as it comes from its creators. Library usually focuses on a narrow set of functionality, which user accesses through an API. It performs specific, well-defined operations. User calls a library function, it executes some code and then control is returned to developer's code. Usually, it does not provide any hooks for developer to extend or override its behavior.

What is software framework?

A software framework is an abstraction used in software development to provide generic functionality for application-specific needs. It is a programming platform, which contains common code with range of generic features, which might be selectively used, overridden or specialized by developers to suit their requirements for the particular application.