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 is .NET Framework?

.NET Framework is a software framework developed by Microsoft, which significantly simplifies software development. It includes a large class library known as Framework Class Library (FCL) and provides language interoperability across several programming languages, which means each one of them can use code written in any of other languages. Programs written for .NET Framework execute in a software environment, known as Common Language Runtime (CLR), an application virtual machine. This unified framework offers a number of benefits to developers including code reuse, simplified debugging, and improved security. FCL and CLR together constitute .NET Framework.

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.

How prototype-based OOP is different from class-based?

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. Read more about prototype-based OOP here. In prototype-based languages objects inherit directly from other objects, in more classical class-based OOP languages inheritance is based around "parent-child" relationship between classes.

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.