My first application• I don’t know any language • Well let’s choose a language for application programming and start learning.
… after 2 month• I have learned programming .. I am good at it and I can build any thing ….
My first application• As I can build anything I want to build a chess… I am a very good chess player.• I know all the rules and I know how to program ... What else do I need…
My first application• After three weeks 600 lines of code.• Ok it’s easy.• After a month it’s 3500 lines of code in one file. Certainly I find scroll bar is very useful.
My first application• But when a bug occurs … lets debug it.• Now it seems building application is not as fun as it ought to be.• Now after learning a good lesson … well try something different.
My first application• Writing in one file creating problems .. :-? 3686
My first applicationOk I will write small codes in different files…
My first applicationOMG now I have 100 files and to change something I have to change 10 files … it is worstthan I imagined.
My first applicationI think I have found the problem .. Thisapplication may be very big and I alone can’tcomplete it. Let’s ask a friend.
My first application• Arrrrghhhh….• Well we code differently so many misunderstanding… it complicates things more
My first application• Let’s stop trying and toiling• Think, how people writes a code which has millions of lines and thousands of developers• How ?????• …
My first application• Let’s see what can be done…• There is something wrong . What is the problem ?
Solutions• Separability• Independence• Readablity
My first application• Ok I successfully build a chess game• Now I want to build checker or other board games.
My Next Applications• I am so lazy, but I have to handle some things again that I have handled in chess game before. Like, – Point Table – Player Switching – Board status – Pieces – Save, load, undo, redo etc….
DRY• If I implement them again it will be wastage of time.• Dont Repeat Yourself (DRY)• Reduce repetition of code of all kinds
DRY• I want to reuse code that I used before in chess game
DRY• The functions need to customize as it was written in chess game i have to change it so that it also work for checker.
DRY• Some times this changes are different because there are so many options and varieties of board games
DRY• If I write those functionalities in a sort of generalized way such that it can be used in all board games.• Then I can develop this games very fast without repeating myself.
DRY• Now I can separate the similar codes that I can reuse for these board games.• If I need to build checker then I need similar structure as chess game.
DRY• If there is a structure that has similar features for these games then I do not need to start from the beginning.• I can straight jump into game logic. logic
Frameworks• The structure that I built to use for all board games can be called framework.• A reusable set of libraries or classes for a software system.• Used to implement the standard structure of an application.
Few Frameworks• For web application – Symfony – Zend – CodeIgniter – CakePHP – .NET – Django• For desktop application – Qt C++ – WxWidget
• Here is an idea. I am a human why should I repeat another humans work.• I havent coded yet but I need not to because some one has already coded it for others to reuse.• There is no point to reinvent the wheel
Model• "Represent knowledge"• The data/business functionality
View• Visual representation of the model• The screens and widgets of app• Gets data from model & updates model
Controller• Link between user and system• Responsible for intercepting user input• Passes user input to view via messages