What is an algorithm?

In general, an algorithm is a sequence of well-defined instructions for solving a particular problem. Originally, algorithms were part of mathematics – the word “algorithm” comes from the Arabic writer Muhammad ibn Musa al-Khwarizmi, – but currently it is usually associated with computer science and programming.

What are advantages of composition and aggregation over inheritance?

Object composition in OOP refers to combining two or more different classes with purpose of creating new, more complex class. In case of composition, an object "owns" another object, rather than just use it, which means if main object will be destroyed, all internal objects should be destroyed as well. In case of aggregation, which is a closely related concept to composition, you can say an internal object is a part of the main object, but is still independent and can exists on its own.

Definition of C# programming language

C# is one of the programming languages designed for the .NET Framework software development by Microsoft. It is most known language for this platform. C# is intended to be a modern, simple, general-purpose, object-oriented programming language. C# is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines.

What is polymorphism?

Polymorphism is one of the four fundamental OOP principles. It is the ability to present the same interface for differing underlying types. In terms of .NET, for example, polymorphism means that at run time, objects of a subclass may be treated as objects of a superclass in places of their use, such as collections or method parameters. When this occurs, the object's actual type at run-time is no longer identical to its declared type. There are several kinds of polymorphism.

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.