OOP Concepts
https://web.stanford.edu/class/cs193j/handouts_old/03OOPConcepts.pdf (diễn tả ngắn gọn về OOP)
Common Type System
https://docs.microsoft.com/en-us/dotnet/standard/base-types/common-type-system
OOP
- Primitive Types & Reference Types
- Pass By Value & By Reference
- Pointers & References
- Important OOP concepts you need to understand:
- Modularity (classes, objects)
- Data Encapsulation
- Inheritance
- Abstraction
- Polymorphism
https://www.cl.cam.ac.uk/teaching/0910/OOProg/OOP.pdf
http://www.cl.cam.ac.uk/teaching/0910/ConceptsPL/JavaCsharp.pdf
http://javajee.com/summary-of-object-oriented-programming-oop-concepts-in-java
Abstract class
http://www.dotnettricks.com/learn/csharp/a-deep-dive-into-csharp-abstract-class
http://csharp.net-tutorials.com/classes/abstract-classes/
http://www.c-sharpcorner.com/UploadFile/annathurai/abstract-class-in-C-Sharp/
http://www.c-sharpcorner.com/UploadFile/93126e/difference-between-abstract-class-and-an-interface/
https://www.codeproject.com/Articles/6118/All-about-abstract-classes
https://www.dotnetperls.com/abstract
https://forums.asp.net/t/1966102.aspx?Built+in+Abstract+Classes+Methods+and+Interfaces
Design Patterns
Creational Patterns: Patterns concerned with the creation of objects (e.g. Singleton, Abstract Factory).
Structural Patterns: Patterns concerned with the composition of classes or objects (e.g. Composite, Decorator, Proxy).
Behavioural Patterns: Patterns concerned with how classes or objects interact and distribute responsibility (e.g. Observer, State, Strategy).
Below are use case for some design patterns:
Decorator Attach additional responsibilities to an object dynamically. Decorators provide flexible alternatives to subclassing
for extending functionality.
State Allow and object to alter its behaviour when its internal state changes.
Strategy Define a family of algorithms, encapsulate each on, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.
Composite Compose objects into tree structures to represent part whole hierarchies. Composite lets clients treat individual objects
and compositions of object a uniformly.
Singleton Ensure a class only has one instance, and provide a global point of access to it.
Proxy Provide a surrogate or placeholder for another object to control access to it.
Observer Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified
and updated accordingly.
Abstract Factory Provide an interface for creating families of related or dependent objects without specifying their concrete
classes.