csci-383 object-oriented programming & design lecture 1

17
CSCI-383 Object-Oriented Programming & Design Lecture 1

Upload: hester-wade

Post on 29-Dec-2015

220 views

Category:

Documents


0 download

TRANSCRIPT

  • CSCI-383Object-Oriented Programming & Design

    Lecture 1

  • Course Overview

    Class webpage: (go over syllabus)http://www.stfx.ca/people/igondra/csci383

  • Programming ParadigmA way of conceptualizing what it means to perform computation and how tasks to be carried out on the computer should be structured and organizedImperative : Machine-model basedFunctional : Equations; Expression EvaluationLogical : First-order Logic DeductionObject-Oriented : Programming with Data Types

  • What is OOP?Object-Oriented Programming (OOP) is a programming paradigm in which one models a problem in terms of the entities and concepts found in the problem domain

  • Why Use OOP?OOP is a tool that helps developers manage better the increasingly complex software projects they face today

  • Software TodayThe economies of ALL developed nations are dependent on software

    More and more systems are software controlledIt has been said that modern aircrafts are simply computers with wings. E.g., the Boeing 777 has more than 4 million lines of code to control subsystems and aid pilots in flight management

  • Software DevelopmentIts hard!Important to distinguish easy systems (e.g., one developer, one user) from hard systems (e.g., multiple developers, multiple users, products)Experience with easy systems is misleading. One person techniques do not scale upThe problem is complexity. Many sources, but size is key

  • Flexibility Leads to ComplexitySoftware offers the ultimate flexibilityA developer can express almost any kind of abstractionWhile the construction industry has uniform building codes and standards, few such standards in the software industry

  • Our task: engineer the illusion of simplicity!

  • The software crisisWeve been in the midst of a software crisis ever since the 1968 NATO meetingDifficulties of building big software loomed so large that in 1968 the NATO Science Committee convened some 50 top programmers, computer scientists and captains of industry to plot a course out of what had come to be known as the software crisis Refers to our inability to produce or maintain high-quality software at a reasonable price and on schedule. Basically, we suck

  • A Solution - Software EngineeringGreater emphasis on systematic development

    A concentration on finding out the users requirementsFormal/Semi Formal specification of the requirements of a systemGreater emphases on trying to ensure error free code

  • OOP for Complexity ControlUsually, we use complexity to mean run-time complexity or space complexityHowever, measures of complexity can take other forms, such asDevelopment time and costsMaintenance time and costsError time and costsOOP is a complexity control tool

  • Understanding the ProblemsConsidering the problems in software development and the goals that software development seeks to achieve. These are:Meeting the users needsLow cost of productionHigh performancePortabilityLow cost of maintenanceHigh reliabilityDelivery on time

  • Software QualityExternal Quality FactorsUser/Client perspectiveCorrectness, Speed, Ease of use, etc

    Internal Quality Factors Designer / Implementer perspectiveModularity, Readability, etc

    Internal Quality is a means to achieve External Quality

  • Expressive Power vs NaturalnessObject-oriented techniques do not provide any new computational power that permits problems to be solved that cannot, in theory, be solved by other means (Church-Turing Hypothesis)

    But object-oriented techniques do make it easier and more natural to address problems in a fashion that tends to favor the management of large software projects

  • Types of OOP LanguagesLanguages, such as Smalltalk, are called pure object-oriented languagesEverything in the language is an objectAll execution takes place by means of message passingLanguages such as C++ are called hybrid object-oriented languagesCombine OOP with traditional languages

  • What is object-oriented?A system is said to be object-oriented if it exhibits 4 categories of traitsAbstraction and classificationEncapsulation and data hidingInheritance and polymorphismMessage passing