Introduction to Frameworks
Objective
I want to be a software engineer
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…
Week 1
Week 2
Week 3
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 application
Ok I will write small codes in different files…
My first application
OMG now I have 100 files and to change some thing I have to change 10 files … it is worst than I imagined.
My first application
I 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.
• Don't 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 haven't 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
MVC
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
Questions?
Top Related