Object Oriented Programming with C#
Monday, March 18, 2013 at 9:00 AM - Thursday, March 21, 2013 at 5:00 PM (CDT)
C# is a wonderful Object Oriented Language with some functional tools sprinkled in. However, many people do not how to take the object oriented features available to build systems that are easy to build, enhance and maintain. This course is designed to help you make the most of these features and learn to design object oriented systems.
What We Will Cover
ü Utilizing all of C# object oriented language features.
ü Testing your code and how to design systems that are easy to test.
ü Modern patterns and practices used to build modular systems that allow for easy feature enhancement and modifications.
ü Advanced .Net programming concepts to let you build systems with as little friction as possible. Such as DSLs, declarative programming, and metaprogramming.
ü Architectural patterns and concepts to help shape your applications to their needs.
What We Won’t Cover
We will not cover all details of the language nor will we cover all details of the .Net Framework (how could we!). We are only going to cover features related to object oriented programming, Familiarity with the basics of c#, .Net and Visual Studio will be expected.
We won't be covering any specific .Net frameworks, like ASP.Net, MVC, WCF, at least not specifically. The concepts in this course can be applied to any of these libraries.
This is the basic outline for the course to give you an idea of what topics we'll cover. It is still under construction and open to suggestions to topics you would like to discuss too.
- Object Oriented Features in C#
- Changing behavior with polymorphism
- Changing behavior with composition
- Defining behavior with interfaces
- Principles: Single Responsibility, Liskoff Substitution,
- Patterns Factory, Builder, Adapter,
- Unit testing
- Test driven development
- Principles: Demeter, Inversion of Control
- Patterns 1. Template, Strategy, Visitor
- IOC containers
- Law of Demeter
- Open Closed Principle
- Combining functional programming
- anonymous functions, lamdas
- Declaritive Programming
- Event Driven Architeture
- Patterns: Chain of Resp, Command, Mediator, Observer
- Reflection and MetaProgramming
- Command Query Separation
- Student Requested Material