SlideShare ist ein Scribd-Unternehmen logo
1 von 35
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 .. This
application may be very big and I alone can’t
complete 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?

Weitere ähnliche Inhalte

Andere mochten auch (14)

Roger anna 1_
Roger anna 1_Roger anna 1_
Roger anna 1_
 
Internet?
Internet?Internet?
Internet?
 
Child labour prersentation
Child labour prersentationChild labour prersentation
Child labour prersentation
 
Blog natuurgidsencursussen
Blog natuurgidsencursussenBlog natuurgidsencursussen
Blog natuurgidsencursussen
 
Uk pulm arterhypert
Uk pulm arterhypertUk pulm arterhypert
Uk pulm arterhypert
 
Internet?
Internet?Internet?
Internet?
 
WordPress for Content Editors
WordPress for Content EditorsWordPress for Content Editors
WordPress for Content Editors
 
Reportaje
ReportajeReportaje
Reportaje
 
Management3
Management3 Management3
Management3
 
Urban Environment Monitor
Urban Environment MonitorUrban Environment Monitor
Urban Environment Monitor
 
Internet
InternetInternet
Internet
 
Gastcollege: Basis HTML, CSS en JavaScript
Gastcollege: Basis HTML, CSS en JavaScriptGastcollege: Basis HTML, CSS en JavaScript
Gastcollege: Basis HTML, CSS en JavaScript
 
Moderne webshop
Moderne webshopModerne webshop
Moderne webshop
 
Equity Crowdfunding Presentazione (Italiano)
Equity Crowdfunding Presentazione (Italiano)Equity Crowdfunding Presentazione (Italiano)
Equity Crowdfunding Presentazione (Italiano)
 

Ähnlich wie 04. introduction to frameworks

Orthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable CodeOrthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable Code
rsebbe
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 

Ähnlich wie 04. introduction to frameworks (20)

Introducing systems analysis, design & development Concepts
Introducing systems analysis, design & development ConceptsIntroducing systems analysis, design & development Concepts
Introducing systems analysis, design & development Concepts
 
CPP01 - Introduction to C++
CPP01 - Introduction to C++CPP01 - Introduction to C++
CPP01 - Introduction to C++
 
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkMaking A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You Think
 
Orthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable CodeOrthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable Code
 
Code Review
Code ReviewCode Review
Code Review
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Untangling - fall2017 - week 7
Untangling - fall2017 - week 7
 
How to write a web framework
How to write a web frameworkHow to write a web framework
How to write a web framework
 
CPP02 - The Structure of a Program
CPP02 - The Structure of a ProgramCPP02 - The Structure of a Program
CPP02 - The Structure of a Program
 
A tale of 3 databases
A tale of 3 databasesA tale of 3 databases
A tale of 3 databases
 
Introduction to the intermediate Python - v1.1
Introduction to the intermediate Python - v1.1Introduction to the intermediate Python - v1.1
Introduction to the intermediate Python - v1.1
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair Programming
 
Component-first Applications
Component-first ApplicationsComponent-first Applications
Component-first Applications
 
Game design 2 (2013): Lecture 14 - Revision
Game design 2 (2013): Lecture 14 - RevisionGame design 2 (2013): Lecture 14 - Revision
Game design 2 (2013): Lecture 14 - Revision
 
Scaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHPScaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHP
 
Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web Applications
 
Software Engineer- A unity 3d Game
Software Engineer- A unity 3d GameSoftware Engineer- A unity 3d Game
Software Engineer- A unity 3d Game
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Gpgpu intro
Gpgpu introGpgpu intro
Gpgpu intro
 
Building a Simple Theme Framework
Building a Simple Theme FrameworkBuilding a Simple Theme Framework
Building a Simple Theme Framework
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

04. introduction to frameworks

  • 2. Objective I want to be a software engineer
  • 3. My first application • I don’t know any language  • Well let’s choose a language for application programming and start learning.
  • 4. … after 2 month • I have learned programming .. I am good at it and I can build any thing …. 
  • 5. 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…
  • 9. 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.
  • 10. 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.
  • 11. My first application • Writing in one file creating problems .. :-? 3686
  • 12. My first application Ok I will write small codes in different files…
  • 13. 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.
  • 14. My first application I think I have found the problem .. This application may be very big and I alone can’t complete it. Let’s ask a friend.
  • 15. My first application • Arrrrghhhh…. • Well we code differently so many misunderstanding… it complicates things more
  • 16. 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 ????? • …
  • 17. My first application • Let’s see what can be done… • There is something wrong . What is the problem ?
  • 19. My first application • Ok I successfully build a chess game • Now I want to build checker or other board games.
  • 20. 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….
  • 21. DRY • If I implement them again it will be wastage of time. • Don't Repeat Yourself (DRY) • Reduce repetition of code of all kinds
  • 22. DRY • I want to reuse code that I used before in chess game
  • 23. 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.
  • 24. DRY • Some times this changes are different because there are so many options and varieties of board games
  • 25. 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.
  • 26. 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.
  • 27. 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
  • 28. 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.
  • 29. Few Frameworks • For web application – Symfony – Zend – CodeIgniter – CakePHP – .NET – Django • For desktop application – Qt C++ – WxWidget
  • 30. • 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
  • 31. MVC
  • 32. Model • "Represent knowledge" • The data/business functionality
  • 33. View • Visual representation of the model • The screens and widgets of app • Gets data from model & updates model
  • 34. Controller • Link between user and system • Responsible for intercepting user input • Passes user input to view via messages