SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
CREATIVEANTFARM
an experiment in object-oriented lingo programming




SAE London - Multimedia Arts Degree

October 2002
Module 103 - Basic Multimedia Studies

Research Project
Object-Oriented Programming vs. Procedural Progrmmaing in Lingo




                                                                  student name: Amir Dotan

                                                                          student ID: 42480

                                                                   course code: MAD1001Y
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




      1.0 Introduction

      2.0 Research Description
             2.1 Research objectives
             2.2 Theoretical research
             2.3 Practical research – concept and description
                     2.3.1 Program storyboard
                     2.3.2 Classes description

      3.0 Paradigm shift – stepping into OOP

      4.0 OOP vs. Procedural in Lingo – the grid case study

      5.0 Conclusions and personal findings

      6.0 Resources

      7.0 Appendix




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 1.0    Introduction
  Object-oriented is a programming methodology, which became highly accepted and widely used
  during the course of the last two decades. It offers an efficient approach to minimizing develop-
  ment time and maximizing code reusability. Among the object-oriented languages one can find
  C++, Java and Smalltalk to name but a few and leading multimedia-authoring environments such
  as Macromedia Director and Macromedia Flash make use of the object-oriented paradigm across
  different levels and facilitate object-oriented scripting to some extent.

  Before object-oriented was introduced, the methodology used to program was a procedural one
  which was based mainly on constructing a set of routines to execute a task. That approach posed
  problems and difficulties, which lead to the creation of the object-oriented paradigm.
  Today, both methodologies are being practiced and implemented in Lingo (Director) and Action-
  Script (Flash). Since each one represents an approach, a developer can choose to adopt one ap-
  proach over the other. The result may be the same in terms of functionality and visual, but very
  different when it comes to code reusability, program scalability etc.

  This project sought to examine and evaluate the two paradigms in the context of Lingo program-
  ming. The importance and significance of the research stretched beyond Lingo and offered an in-
  troduction to fundamental object-oriented concepts, which stand at the heart of other important
  programming languages.

  The project consisted of writing a program in Lingo using the object-oriented paradigm as a
  means of learning and get familiar with the different concepts and design patterns and this writ-
  ten report, which will describe the experience of dealing with object-oriented programming and
  the major differences felt between developing a program using object-oriented and procedural
  programming.




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 2.0    Research description
 The research included a paliminary theoretical study into the concepts of object-oriented thinking
 followed by a practical development process. Both consumed almost the same amount of time
 (approximately 3 months each) and proved to be as equaly important and crucial. A great deal of
 the theorectical research seemd at times obscure and too absract, and once the actual develop-
 ment started it was referenced a number of times and only then became more understandble.

 2.1 Research objectives
 The main objective of this research project was to get familiar with the object-oriented mindset
 and how it can be implemented in Lingo. In order to accomplish this goal a program was written in
 Lingo using the object-oriented paradigm, which served as an important experimental ground.
 The secondary objective was to examine the difference between the two methodologies being pro-
 cedural and object-oriented programming and evaluate them in the context of the development
 process.

 2.2 Theoretical research
 Prior to the practical research an extensive theoretical research was made to try and come to
 terms with object-oriented concepts such as encapsulation, inheritance, polymorphism and oth-
 ers. Most of the resources rightfully argued that these concepts are somewhat difficult to visualize
 and digest without practical practice and since adopting the object-oriented approach demanded a
 complete paradigm shift, these early stages seemed confusing and at times frustrating.
 Seeing as how object-oriented is a methodology that isn’t reserved to a one single language, a
 large part of the resources consisted of material, which had nothing to do with Lingo or Director
 and that allowed a wider view on the topic from the very beginning.

 2.3 Practical research – concept and description
 The practical aspect of the research was to write a program in Lingo using the object-oriented para-
 digm. The concept that was chosen to serve as the creative framework of the program was titled
 “Creative ant farm” and it dictated the demands and requirements of the system.
 “Creative ant farm” is an experimental program with no commercial value at this point, in which
 the user is asked to create a pixilated drawing on a grid, and upon completion a group of animated
 ants reconstruct the drawing on the screen using different kinds of leafs.

 This specific idea seemed ideal for a project dealing with object-oriented concepts due to the fact
 that a main part of the program will have to be a “living” element (the ant) which will have to du-
 plicated and allow each instance to display a different behavior and act independently. It will prove
 to be an important lesson in understanding the nature of polymorphism and the ability of instances
 of a class to display individual property values, which result in an individual behavior.




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 2.0    Research description
 2.3.1 Program storyboard




       1st stage – creating a grid
       After an introduction screen, the user is asked to enter 2 parameters that will define
       the size of the grid: the total number of cells and the number of cells in arrow. To
       avoid a situation where the grid gets outside the movie (100 cell and 2 cells in a row
       will result in 50 rows) once the user defined the total cells and presses on the 2nd
       field, a message appears which display the valid range the user can choose from as
       the value. In any case invalid values are entered, the program outputs an alert mes-
       sage.




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 2.0    Research description
 2.3.1 Program storyboard




       2nd stage – creating the drawing
       Once the grid is created, the user starts selecting cells by clicking them and changes
       their color. He can deselect a cell selection by selecting it again. The screen also of-
       fers the user to go back to previous screen and define a new grid in case he wishes
       to do.




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 2.0    Research description
 2.3.1 Program storyboard




       3rd stage – reconstructing the drawing
       When the user presses the “done” button the screen clears and from this moment on
       there is no more interaction with the program. Animated ants appear from different
       directions carrying a leaf heading toward a point on the screen. When they reach it
       they pause for a few seconds and then drop the leaf and continue moving till they are
       outside the screen.
       The end result is a complete reconstruction of the original drawing only on a larger
       scale and using leafs to visualize it.




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 2.0    Research description
 2.3.2 Classes description
 The object-oriented design of the program makes use of 6 classes. The following de-
 scription is relevant to get a first look of the logical structure object-oriented offers,
 and how a program runs on many objects that are all instances of a small group of
 classes. The number of instances is of less importance once the right and most effec-
 tive relationship between the classes is established. Designing that relationship was
 one of the more challenging aspects of the project.

 1. AppManager Class
       - Initializes the program and creates the 2 manager objects: GridManager
         and AntManager.
       - Control the navigation inside the program.
       - Receives user input and checks validation of entry fields.
       - Receives user input on the grid.

 2. GridManager Class
        - Creates the grid.
        - Updates the grid.
        - Removes the grid.

 3. AppObject Class
       - Contains common methods such as doPuppet() and getLoc() and serves as
         a super class for AntClass and GridBlockClass.

 4. Ant Class
        - Defines an ant object and includes all the properties and method, which
          generate the movement toward a target on screen.

 5. GridBlock Class
        - Defines a grid block object.

 6. SpriteManager
         - Controls the distribution of sprite numbers to which object that wishes to
           be puppeted.




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 3.0    Paradigm shift – stepping into OOP
 Making the “switch” from procedural to object-oriented thinking was not an easy one. It demanded a
 new way of looking and analyzing things and a new unfamiliar approach to problem solving. At first
 it seemed less natural and intuitive, but as the development process progressed, it became obvious
 that once the mind has been set, the object-oriented thought can be just as intuitive and natural as
 the procedural one.

 As oppose to procedural programming, object-oriented felt stricter and logically more demanding.
 The delicate relationships between the classes and the fundamental concepts that must be upheld
 force a constant evaluation of the structure and logic. If in procedural programming there wasn’t a
 feeling that there is a limit on the number of routines (although you should always strive to keep
 it down to the absolute minimum), in object-oriented the question of whether or not a new class
 should be introduced is critical and even once such a class has been added question of possible in-
 heritance arise and the evaluation starts all over again.

 Not to say that object-oriented is more difficult or better, but it seemed that in object-oriented there
 are more consideration that may appear limiting but in a fact has the opposite effect.
 Since Lingo facilitates object-oriented programming on a very basic level (inheritance using the an-
 cestor property, class definition using parent scripts) it proved to be a good starting point to experi-
 ment with object-oriented programming. Not because is allows the developer to disregard object-
 oriented rules, on the contrary, it forces him to pay more attention and be more resilient since the
 programming environment doesn’t supply everything automatically.




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 4.0    OOP vs. Procedural programming in Lingo
 As was described before, this research project sought to examine object-oriented programming in
 Lingo in comparisment to procedural programming, the difficulty was that the Director environment
 was designed with object-oriented in mind, and even if one makes no use of parent scripts or any
 object-oriented concept knowingly, the environment itself operates in an object-oriented manor.

 Behaviors, being an integral and fundamental part of any Director production, represent the ob-
 ject-oriented paradigm and benefits of reusing code through out a program by having properties,
 which allow each instance of the code to display different behavior based on a common and shared
 description.
 That being said, it is impossible to program in pure procedural manor even if the logic of the pro-
 gram is structured as a set of functions in movie scripts.

 Because Director offers object-oriented solution built in to its environment, the result of practicing
 procedural programming is a hybrid between procedural and object-oriented where the use of be-
 haviors represents the object-oriented part, and functions in movie script the procedural approach.
 So even a developer that isn’t familiar with the object-oriented methodology enjoys part of its ben-
 efits and advantages.

 Had the program been redesigned using the procedural paradigm in mind it probably would have
 looked and operated the same way as the object-oriented version since as a methodology it offers a
 means to an end, and shouldn’t have no bearing on the visual and functional aspect.
 The developer, not the user, will feel the difference in terms of work when it comes to updating the
 program, scale it, detect and fix bugs etc. To illustrate how the same task looks from two different
 programming views, the GridManager Class, which creates the grid has been translated into a pro-
 cedural routine, which appears to be doing the exact same thing. But when examined in the context
 of the overhaul system, the fact that in the object-oriented version all of the grid information is en-
 capsulated inside the gridManager object, ensures that the grid data can not be tampered with by
 any other part of the program resulting in errors and other problems.
 In the procedural version, the functions use global variables that are exposed to any other function
 in the program and can be accessed anytime from anywhere. A risk that object-oriented tackles by
 enforcing information hiding and protection.

 Another clear advantage when it comes to reducing the amount of code used in the program is the
 fact that the gridManager can be extended or inherit methods and properties from a super class.
 Had there been 5 more manager objects in the program, a method such ass addObjects() could
 have been inherited and written only once. That is an important feature that can not be imitated with
 functions. Although they can call each other and return values they can not be structured in such a
 way that will ensure greater flexibility and code reduction.




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 5.0    Conclusions and personal findings
 Object-oriented is a way of solving problem. As a methodology that’s its essence. The object-ori-
 ented mindset may be hard to digest at first, and even then it takes time and practice to understand
 how to apply it to achieve the best possible result.
 The procedural approach appears to be more intuitive and because of that object-oriented tends to
 be regarded as a higher form of programming, when in fact, it shouldn’t be. It’s just different.
 Procedural programming may seem to be easier to practice, but once you get into the object-ori-
 ented mindset its hard to understand how did you ever program without it in mind, since it changes
 the way one perceives the programming language in relation to itself and other languages as well.

 Understanding objects helps to better understand how a software works and operates, and in case
 of packages such as Director and especially Flash (where there’s the ability to change/extend built-in
 objects) it allows the developer far greater creative freedom when it comes to coding.
 The object-oriented approach is becoming a sort of a standard and by understanding its concepts
 and features a developer can better adapt to new technological realities such as .NET and others.

 As for Lingo, I believe that it’s important to extend the built-in object-oriented environment Director
 offers and explore the realm of parent scripts and other object-oriented concepts.
 Eventhough Lingo facilitates basic object-oriented programming, it is still suficinte to design robust
 applications and get familiar with key concepts that can later be applied and extended in other lan-
 guages such as Java, C++, C#, ActionScript, JavaScript etc.
 Utilizing object-oriented programming in Lingo, as in any other programming environment, helps
 simplifiing a problem and consieving a better solution. That better solution will strive to reuse code
 in an efficiant way and offer a flexible approach to the program’s design.

 I found that object-oriented thinking is a philosopical and mental advanture. It makes the develop-
 ment process more challenging and rewarding. The end result is a simplified solution to a complex
 problem, which might be used as parts or as a whole in future projects.
 This project showed me how 1,000 different ants can be created out of a single class, and these ants
 represent windows in an application, characters in a game and anything else that can and should be
 classified in order to ensure maximum use of code and minimum time spent writing it.




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 6.0    Resources
 Baylis. E., Bounds. J., Britton. D., Thevathasan. L., Director 8.5 Studio, Birmingham, UK: friends
 of ED, 2001.

 Small. P., Lingo Sorcery - The magic of lists, objects and intelligent agents, USA: John Wiley
 & Son Ltd, 2nd edition 1999.

 Drol. W., Object Oriented Macromedia Flash MX, USA: APress, 2002.

 Decker. R., Hirshfield. S., Programming Java - an introduction to programming using Java,
 USA: PWS Publishing Company, 1998.

 Building OOP applications in Flash 5
 http://www.debreuil.com/docs/ch01_Intro.htm

 LingOOP: Object-Oriented Programming with Lingo
 & DreamLight Director Talisman Tips & Tricks
 http://www.dreamlight.com/insights/07/objects.htm

 http://www.director-online.com/howTo/UD_articles/OOP.html

 http://www.director-online.com/howTo/UD_articles/UD19.html

 Object Oriented Programming Concepts
 http://www.umsl.edu/~subraman/concepts_toc.html

 Introduction To Object-Oriented Programming
 http://bepp.8m.com/english/oop/

 Object oriented thinking
 http://www.mcli.dist.maricopa.edu/director/misc/sorcery/wio0896c/sorcery/oot.htm

 Why Procedural is the Wrong First Paradigm if OOP is the Goal
 http://csis.pace.edu/~bergin/papers/Whynotproceduralfirst.html




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 7.0    Appendix
 1. GridManager Class compared with CreateGrid routine

     CreateGrid routine - the procedural approach


 global gridPropList,gridList,targetList,gridMode

 on initGrid xstart,ystart,rowLimit,totalBlocks,gridMember
  gridMode=true
  targetList=[0]
  gridList=[]
  gridPropList=[:]
  gridPropList.addProp(#xStart,xstart)
  gridPropList.addProp(#yStart,ystart)
  gridPropList.addProp(#blockMember,gridMember)
  gridPropList.addProp(#rowLimit,rowlimit)
  gridPropList.addProp(#totalBlocks,totalBlocks)
  puppetGrid()
 end

 on puppetGrid
  repeat with i=1 to gridPropList.getProp(#totalBlocks)
   tempSprNum=getFreeChannel()
   sprite(tempSprNum).puppet=true
   sprite(tempSprNum).scriptInstanceList.add(script(“gridBlock_script”).new())
   gridList.add(sprite(tempSprNum))
   sprite(tempSprNum).member=gridPropList.getProp(#blockMember)
   sprite(tempSprNum).loc=point(-100,-100)
   updatestage
  end repeat
  sendAllSprites(#setMode,”unselected”)
  calculatePos(gridPropList.getProp(#xStart),gridPropList.getProp(#yStart))
 end

 on calculatePos startX,startY
  blockwidth=gridList[1].width
  blockY=startY
  blockX=startX-blockWidth
  blocksInRow=1
  repeat with i=1 to gridPropList.getProp(#totalBlocks)
   blockX=blockX+blockWidth
   gridList[i].loc=point(blockX,blockY)
   blocksInRow=blocksInRow+1
   if blocksInRow>gridPropList.getProp(#rowLimit) then
     blockY=blockY+blockWidth
     blockX=startX-blockWidth
     blocksInRow=1
   end if
  end repeat
 end



SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 7.0    Appendix
 1. GridManager Class compared with CreateGrid routine

     CreateGrid routine - the procedural approach (continue)


  on addToTargetList theItem
   repeat with i in targetList
    if i=theItem then
      targetList.deleteOne(theItem)
      put targetList
      abort
    end if
   end repeat
   repeat with i in targetList
    if i<>theItem then
      myCount=myCount+1
      if myCount=targetList.count then
        targetList.add(theItem)
        put targetList
        myCount=0
        exit repeat
      end if
      next repeat
    end if
   end repeat
  end

  on rescaleGrid toAdd
   repeat with i=1 to gridPropList.getProp(#totalBlocks)
    gridList[i].rect=gridList[i].rect.inflate(toAdd,toAdd)
    gridList[i].blend=30
   end repeat
   gridMode=false
   calculatePos(gridPropList.getProp(#xStart),gridPropList.getProp(#yStart))
  end

  on getFreeChannel
   repeat with i=1 to the lastChannel
    if sprite(i).member=member 0 of castLib 0 then
      return i
      exit repeat
    end if
   end repeat
  end




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 7.0    Appendix
 1. GridManager Class compared with CreateGrid routine

     GridManager Class - the object-oriented approach


  property _xstart,_ystart,_gridMember,_blocksInRow,_gridList,_rowlimit,_totalBlocks
  property _maxBlocks,_maxInRow,_maxInCol,_blockWidth,_gridMemberWidth,_minBlocks

  on new me
   me._gridList=[]
   me._maxBlocks=253
   me._minBlocks=2
   me._maxInRow=23
   me._maxInCol=me._maxBlocks/me._maxInRow
   return me
  end

  on init me,xstart,ystart,rowLimit,totalBlocks
   me._xstart=xstart
   me._ystart=ystart
   me._gridMember=”gridBlock”
   me._rowLimit=rowlimit
   me._totalBlocks=totalBlocks
   me.puppetlist()
  end

  on addObj me,myObj
   me._gridList.add(myObj)
   add the actorlist,myObj
  end

  on puppetList me
   repeat with i=1 to me._gridList.count
     me._gridList[i].doPuppet(me._gridMember,point(-100,-100))
     sprite(me._gridList[i]._sprite).scriptInstanceList[1]=script(“mouseeventsclass”).new(me._gridList[i]._
  sprite,me._gridMember)
   end repeat
   me.calculatePos(me._xstart,me._ystart)
  end




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 7.0    Appendix
 1. GridManager Class compared with CreateGrid routine

     GridManager Class - the object-oriented approach (continue)


  on calculatePos me,startX,startY
   blockwidth=me._gridList[1].getWidth()
   blockY=startY
   blockX=startX-blockWidth
   me._blocksInRow=1
   repeat with i=1 to me._totalBlocks
    blockX=blockX+blockWidth
    me._gridList[i].setLoc(point(blockX,blockY))
    me._blocksInRow=me._blocksInRow+1
    if me._blocksInRow>me._rowLimit then
      blockY=blockY+blockWidth
      blockX=startX-blockWidth
      me._blocksInRow=1
    end if
   end repeat
  end

  on rescaleObjects me,toAdd
   repeat with i=1 to me._gridList.count
    me._gridList[i].rescale(toAdd)
   end repeat
   me._gridMemberWidth=me._gridlist[1].getwidth()
   me.calculatePos(me._xstart,me._ystart)
  end

  on updateGrid me,blockSprite,antAngle,leafMember
   repeat with i=1 to me._gridList.count
    if me._gridList[i].getSprite()=blockSprite then
      me._gridList[i].setAngle(antAngle)
      me._gridList[i].setMember(leafMember)
      me._gridList[i].visibleMode(100)
      exit repeat
    end if
   end repeat
  end

  on destroy me
   repeat with i=1 to me._gridList.count
    me._gridList[i].remove()
    me._gridList[i].destruct()
    me._gridList[i]=void
   end repeat
  end




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
CREATIVEANTFARM
                                                        an experiment in object-oriented lingo programming




 7.0    Appendix
 1. GridManager Class compared with CreateGrid routine

     GridManager Class - the object-oriented approach (continue)


  on getMaxBlocks me
   return me._maxBlocks
  end

  on getMinBlocks me
   return me._minBlocks
  end

  on getMaxInRow me
   return me._maxInRow
  end

  on getMaxInCol me
   return me._maxInCol
  end

  on setXYstart me,newXstart,newYstart
   me._xstart=newXstart
   me._ystart=newYstart
  end

  on destruct me
   me.destroy()
   me._xstart=void
   me._ystart=void
   me._gridMember=void
   me._blocksInRow=void
   me._gridList=[]
   me._rowlimit=void
   me._totalBlocks=void
   me._maxBlocks=void
   me._maxInRow=void
   me._maxInCol=void
   me._blockWidth=void
   me._gridMemberWidth=void
   me=void
  end




SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies

Contenu connexe

Tendances

Pal gov.tutorial4.session1 1.needforsharedsemantics
Pal gov.tutorial4.session1 1.needforsharedsemanticsPal gov.tutorial4.session1 1.needforsharedsemantics
Pal gov.tutorial4.session1 1.needforsharedsemanticsMustafa Jarrar
 
Pal gov.tutorial4.session6 2.knowledge double-articulation
Pal gov.tutorial4.session6 2.knowledge double-articulationPal gov.tutorial4.session6 2.knowledge double-articulation
Pal gov.tutorial4.session6 2.knowledge double-articulationMustafa Jarrar
 
Greenfoot in Problem-solving and Artificial Intelligence
Greenfoot in Problem-solving and Artificial IntelligenceGreenfoot in Problem-solving and Artificial Intelligence
Greenfoot in Problem-solving and Artificial IntelligenceScott Turner
 
Anupam Srivastava
Anupam SrivastavaAnupam Srivastava
Anupam Srivastavaanupam328
 
Digital logic introduction using fpg as resume
Digital logic introduction using fpg as resumeDigital logic introduction using fpg as resume
Digital logic introduction using fpg as resumeAlvi Milanisti
 
PERFORMANCE ANALYSIS OF FINGERPRINTING EXTRACTION ALGORITHM IN VIDEO COPY DET...
PERFORMANCE ANALYSIS OF FINGERPRINTING EXTRACTION ALGORITHM IN VIDEO COPY DET...PERFORMANCE ANALYSIS OF FINGERPRINTING EXTRACTION ALGORITHM IN VIDEO COPY DET...
PERFORMANCE ANALYSIS OF FINGERPRINTING EXTRACTION ALGORITHM IN VIDEO COPY DET...IJCSEIT Journal
 

Tendances (8)

Pal gov.tutorial4.session1 1.needforsharedsemantics
Pal gov.tutorial4.session1 1.needforsharedsemanticsPal gov.tutorial4.session1 1.needforsharedsemantics
Pal gov.tutorial4.session1 1.needforsharedsemantics
 
Pal gov.tutorial4.session6 2.knowledge double-articulation
Pal gov.tutorial4.session6 2.knowledge double-articulationPal gov.tutorial4.session6 2.knowledge double-articulation
Pal gov.tutorial4.session6 2.knowledge double-articulation
 
Project abstract
Project abstractProject abstract
Project abstract
 
Greenfoot in Problem-solving and Artificial Intelligence
Greenfoot in Problem-solving and Artificial IntelligenceGreenfoot in Problem-solving and Artificial Intelligence
Greenfoot in Problem-solving and Artificial Intelligence
 
370 374
370 374370 374
370 374
 
Anupam Srivastava
Anupam SrivastavaAnupam Srivastava
Anupam Srivastava
 
Digital logic introduction using fpg as resume
Digital logic introduction using fpg as resumeDigital logic introduction using fpg as resume
Digital logic introduction using fpg as resume
 
PERFORMANCE ANALYSIS OF FINGERPRINTING EXTRACTION ALGORITHM IN VIDEO COPY DET...
PERFORMANCE ANALYSIS OF FINGERPRINTING EXTRACTION ALGORITHM IN VIDEO COPY DET...PERFORMANCE ANALYSIS OF FINGERPRINTING EXTRACTION ALGORITHM IN VIDEO COPY DET...
PERFORMANCE ANALYSIS OF FINGERPRINTING EXTRACTION ALGORITHM IN VIDEO COPY DET...
 

En vedette

The Socio-Usability Dilemma (2007, Hebrew version)
The Socio-Usability Dilemma (2007, Hebrew version)The Socio-Usability Dilemma (2007, Hebrew version)
The Socio-Usability Dilemma (2007, Hebrew version)Amir Dotan
 
UX in Wall Street - UXI LIVE 2010 presentation (Hebrew version)
UX in Wall Street - UXI LIVE 2010 presentation (Hebrew version)UX in Wall Street - UXI LIVE 2010 presentation (Hebrew version)
UX in Wall Street - UXI LIVE 2010 presentation (Hebrew version)Amir Dotan
 
Designing and Developing an Online Micro-Module on Sustainability for City ...
Designing and Developing an Online  Micro-Module on Sustainability for City  ...Designing and Developing an Online  Micro-Module on Sustainability for City  ...
Designing and Developing an Online Micro-Module on Sustainability for City ...Amir Dotan
 
Project report (2003) - Using Flash MX Cursor-control component to enhance co...
Project report (2003) - Using Flash MX Cursor-control component to enhance co...Project report (2003) - Using Flash MX Cursor-control component to enhance co...
Project report (2003) - Using Flash MX Cursor-control component to enhance co...Amir Dotan
 
The role of User Experience Design in developing financial software that peop...
The role of User Experience Design in developing financial software that peop...The role of User Experience Design in developing financial software that peop...
The role of User Experience Design in developing financial software that peop...Amir Dotan
 
UX and the City - An introduction to user experience design in the financial ...
UX and the City - An introduction to user experience design in the financial ...UX and the City - An introduction to user experience design in the financial ...
UX and the City - An introduction to user experience design in the financial ...Amir Dotan
 
Project report on Raj Express Newspaper
Project report on Raj Express NewspaperProject report on Raj Express Newspaper
Project report on Raj Express NewspaperAnkit Jain
 

En vedette (8)

The Socio-Usability Dilemma (2007, Hebrew version)
The Socio-Usability Dilemma (2007, Hebrew version)The Socio-Usability Dilemma (2007, Hebrew version)
The Socio-Usability Dilemma (2007, Hebrew version)
 
UX in Wall Street - UXI LIVE 2010 presentation (Hebrew version)
UX in Wall Street - UXI LIVE 2010 presentation (Hebrew version)UX in Wall Street - UXI LIVE 2010 presentation (Hebrew version)
UX in Wall Street - UXI LIVE 2010 presentation (Hebrew version)
 
Designing and Developing an Online Micro-Module on Sustainability for City ...
Designing and Developing an Online  Micro-Module on Sustainability for City  ...Designing and Developing an Online  Micro-Module on Sustainability for City  ...
Designing and Developing an Online Micro-Module on Sustainability for City ...
 
Project report (2003) - Using Flash MX Cursor-control component to enhance co...
Project report (2003) - Using Flash MX Cursor-control component to enhance co...Project report (2003) - Using Flash MX Cursor-control component to enhance co...
Project report (2003) - Using Flash MX Cursor-control component to enhance co...
 
The role of User Experience Design in developing financial software that peop...
The role of User Experience Design in developing financial software that peop...The role of User Experience Design in developing financial software that peop...
The role of User Experience Design in developing financial software that peop...
 
Input devices
Input devicesInput devices
Input devices
 
UX and the City - An introduction to user experience design in the financial ...
UX and the City - An introduction to user experience design in the financial ...UX and the City - An introduction to user experience design in the financial ...
UX and the City - An introduction to user experience design in the financial ...
 
Project report on Raj Express Newspaper
Project report on Raj Express NewspaperProject report on Raj Express Newspaper
Project report on Raj Express Newspaper
 

Similaire à Creative Ant Farm project report (2002)

The Object Model
The Object Model  The Object Model
The Object Model yndaravind
 
OOP and Its Calculated Measures in Programming Interactivity
OOP and Its Calculated Measures in Programming InteractivityOOP and Its Calculated Measures in Programming Interactivity
OOP and Its Calculated Measures in Programming Interactivityiosrjce
 
A case study of LEGO Mindstorms suitability for artificial intelligence and...
A case study of LEGO Mindstorms   suitability for artificial intelligence and...A case study of LEGO Mindstorms   suitability for artificial intelligence and...
A case study of LEGO Mindstorms suitability for artificial intelligence and...Emily Smith
 
Cs8383 oop lab manual-2019
Cs8383 oop lab manual-2019Cs8383 oop lab manual-2019
Cs8383 oop lab manual-2019Kayathri Devi D
 
A Survey of Object Oriented Programming LanguagesMaya Hris.docx
A Survey of Object Oriented Programming LanguagesMaya Hris.docxA Survey of Object Oriented Programming LanguagesMaya Hris.docx
A Survey of Object Oriented Programming LanguagesMaya Hris.docxdaniahendric
 
A Contextual Inquiry of Expert Programmers in an Event-Based Programming Envi...
A Contextual Inquiry of Expert Programmers in an Event-Based Programming Envi...A Contextual Inquiry of Expert Programmers in an Event-Based Programming Envi...
A Contextual Inquiry of Expert Programmers in an Event-Based Programming Envi...Wookjae Maeng
 
Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching o...
Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching o...Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching o...
Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching o...Gonçalo Cruz Matos
 
SOFIA - A Smart-M3 lab course: approach and design style to support student p...
SOFIA - A Smart-M3 lab course: approach and design style to support student p...SOFIA - A Smart-M3 lab course: approach and design style to support student p...
SOFIA - A Smart-M3 lab course: approach and design style to support student p...Sofia Eu
 
Research & Development Projects
Research & Development ProjectsResearch & Development Projects
Research & Development ProjectsJeroen Doggen
 
Gamification: strategies for interaction and pedagogic assessment - at Great ...
Gamification: strategies for interaction and pedagogic assessment - at Great ...Gamification: strategies for interaction and pedagogic assessment - at Great ...
Gamification: strategies for interaction and pedagogic assessment - at Great ...Ricardo Rodrigues Nunes
 
Leonel Morgado Gamification Strategies utad
Leonel Morgado Gamification Strategies   utadLeonel Morgado Gamification Strategies   utad
Leonel Morgado Gamification Strategies utadProject GREAT
 
report_barc
report_barcreport_barc
report_barcsiontani
 
Using Evolutionary Prototypes To Formalize Product Requirements
Using Evolutionary Prototypes To Formalize Product RequirementsUsing Evolutionary Prototypes To Formalize Product Requirements
Using Evolutionary Prototypes To Formalize Product RequirementsArnold Rudorfer
 
VEDANT GHODKE - RESUME
VEDANT GHODKE - RESUMEVEDANT GHODKE - RESUME
VEDANT GHODKE - RESUMEVedant Ghodke
 

Similaire à Creative Ant Farm project report (2002) (20)

The Object Model
The Object Model  The Object Model
The Object Model
 
OOP and Its Calculated Measures in Programming Interactivity
OOP and Its Calculated Measures in Programming InteractivityOOP and Its Calculated Measures in Programming Interactivity
OOP and Its Calculated Measures in Programming Interactivity
 
A case study of LEGO Mindstorms suitability for artificial intelligence and...
A case study of LEGO Mindstorms   suitability for artificial intelligence and...A case study of LEGO Mindstorms   suitability for artificial intelligence and...
A case study of LEGO Mindstorms suitability for artificial intelligence and...
 
Cs8383 oop lab manual-2019
Cs8383 oop lab manual-2019Cs8383 oop lab manual-2019
Cs8383 oop lab manual-2019
 
Winter Projects GDSC IITK
Winter Projects GDSC IITKWinter Projects GDSC IITK
Winter Projects GDSC IITK
 
A Survey of Object Oriented Programming LanguagesMaya Hris.docx
A Survey of Object Oriented Programming LanguagesMaya Hris.docxA Survey of Object Oriented Programming LanguagesMaya Hris.docx
A Survey of Object Oriented Programming LanguagesMaya Hris.docx
 
A Contextual Inquiry of Expert Programmers in an Event-Based Programming Envi...
A Contextual Inquiry of Expert Programmers in an Event-Based Programming Envi...A Contextual Inquiry of Expert Programmers in an Event-Based Programming Envi...
A Contextual Inquiry of Expert Programmers in an Event-Based Programming Envi...
 
Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching o...
Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching o...Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching o...
Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching o...
 
SOFIA - A Smart-M3 lab course: approach and design style to support student p...
SOFIA - A Smart-M3 lab course: approach and design style to support student p...SOFIA - A Smart-M3 lab course: approach and design style to support student p...
SOFIA - A Smart-M3 lab course: approach and design style to support student p...
 
Proyecto de ingles
Proyecto de inglesProyecto de ingles
Proyecto de ingles
 
Research & Development Projects
Research & Development ProjectsResearch & Development Projects
Research & Development Projects
 
Artigo Educon2012
Artigo Educon2012Artigo Educon2012
Artigo Educon2012
 
Analysis Report
 Analysis Report  Analysis Report
Analysis Report
 
Gamification: strategies for interaction and pedagogic assessment - at Great ...
Gamification: strategies for interaction and pedagogic assessment - at Great ...Gamification: strategies for interaction and pedagogic assessment - at Great ...
Gamification: strategies for interaction and pedagogic assessment - at Great ...
 
INTRODUCTION TO JAVA
INTRODUCTION TO JAVAINTRODUCTION TO JAVA
INTRODUCTION TO JAVA
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented Programming
 
Leonel Morgado Gamification Strategies utad
Leonel Morgado Gamification Strategies   utadLeonel Morgado Gamification Strategies   utad
Leonel Morgado Gamification Strategies utad
 
report_barc
report_barcreport_barc
report_barc
 
Using Evolutionary Prototypes To Formalize Product Requirements
Using Evolutionary Prototypes To Formalize Product RequirementsUsing Evolutionary Prototypes To Formalize Product Requirements
Using Evolutionary Prototypes To Formalize Product Requirements
 
VEDANT GHODKE - RESUME
VEDANT GHODKE - RESUMEVEDANT GHODKE - RESUME
VEDANT GHODKE - RESUME
 

Plus de Amir Dotan

Designing Experiences in Investment Banking
Designing Experiences in Investment Banking Designing Experiences in Investment Banking
Designing Experiences in Investment Banking Amir Dotan
 
Designing with Only Four People in Mind? - A Case Study of Using Personas to ...
Designing with Only Four People in Mind? - A Case Study of Using Personas to ...Designing with Only Four People in Mind? - A Case Study of Using Personas to ...
Designing with Only Four People in Mind? - A Case Study of Using Personas to ...Amir Dotan
 
Sustainability Games, Tools And Related Websites
Sustainability   Games, Tools And Related WebsitesSustainability   Games, Tools And Related Websites
Sustainability Games, Tools And Related WebsitesAmir Dotan
 
50 University Website Designs
50 University Website Designs50 University Website Designs
50 University Website DesignsAmir Dotan
 
100 UK University Website Designs
100 UK University Website Designs100 UK University Website Designs
100 UK University Website DesignsAmir Dotan
 
Technical Social Mechanisms - Examples and current trends
Technical Social Mechanisms - Examples and current trendsTechnical Social Mechanisms - Examples and current trends
Technical Social Mechanisms - Examples and current trendsAmir Dotan
 

Plus de Amir Dotan (6)

Designing Experiences in Investment Banking
Designing Experiences in Investment Banking Designing Experiences in Investment Banking
Designing Experiences in Investment Banking
 
Designing with Only Four People in Mind? - A Case Study of Using Personas to ...
Designing with Only Four People in Mind? - A Case Study of Using Personas to ...Designing with Only Four People in Mind? - A Case Study of Using Personas to ...
Designing with Only Four People in Mind? - A Case Study of Using Personas to ...
 
Sustainability Games, Tools And Related Websites
Sustainability   Games, Tools And Related WebsitesSustainability   Games, Tools And Related Websites
Sustainability Games, Tools And Related Websites
 
50 University Website Designs
50 University Website Designs50 University Website Designs
50 University Website Designs
 
100 UK University Website Designs
100 UK University Website Designs100 UK University Website Designs
100 UK University Website Designs
 
Technical Social Mechanisms - Examples and current trends
Technical Social Mechanisms - Examples and current trendsTechnical Social Mechanisms - Examples and current trends
Technical Social Mechanisms - Examples and current trends
 

Creative Ant Farm project report (2002)

  • 1. CREATIVEANTFARM an experiment in object-oriented lingo programming SAE London - Multimedia Arts Degree October 2002 Module 103 - Basic Multimedia Studies Research Project Object-Oriented Programming vs. Procedural Progrmmaing in Lingo student name: Amir Dotan student ID: 42480 course code: MAD1001Y
  • 2. CREATIVEANTFARM an experiment in object-oriented lingo programming 1.0 Introduction 2.0 Research Description 2.1 Research objectives 2.2 Theoretical research 2.3 Practical research – concept and description 2.3.1 Program storyboard 2.3.2 Classes description 3.0 Paradigm shift – stepping into OOP 4.0 OOP vs. Procedural in Lingo – the grid case study 5.0 Conclusions and personal findings 6.0 Resources 7.0 Appendix SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 3. CREATIVEANTFARM an experiment in object-oriented lingo programming 1.0 Introduction Object-oriented is a programming methodology, which became highly accepted and widely used during the course of the last two decades. It offers an efficient approach to minimizing develop- ment time and maximizing code reusability. Among the object-oriented languages one can find C++, Java and Smalltalk to name but a few and leading multimedia-authoring environments such as Macromedia Director and Macromedia Flash make use of the object-oriented paradigm across different levels and facilitate object-oriented scripting to some extent. Before object-oriented was introduced, the methodology used to program was a procedural one which was based mainly on constructing a set of routines to execute a task. That approach posed problems and difficulties, which lead to the creation of the object-oriented paradigm. Today, both methodologies are being practiced and implemented in Lingo (Director) and Action- Script (Flash). Since each one represents an approach, a developer can choose to adopt one ap- proach over the other. The result may be the same in terms of functionality and visual, but very different when it comes to code reusability, program scalability etc. This project sought to examine and evaluate the two paradigms in the context of Lingo program- ming. The importance and significance of the research stretched beyond Lingo and offered an in- troduction to fundamental object-oriented concepts, which stand at the heart of other important programming languages. The project consisted of writing a program in Lingo using the object-oriented paradigm as a means of learning and get familiar with the different concepts and design patterns and this writ- ten report, which will describe the experience of dealing with object-oriented programming and the major differences felt between developing a program using object-oriented and procedural programming. SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 4. CREATIVEANTFARM an experiment in object-oriented lingo programming 2.0 Research description The research included a paliminary theoretical study into the concepts of object-oriented thinking followed by a practical development process. Both consumed almost the same amount of time (approximately 3 months each) and proved to be as equaly important and crucial. A great deal of the theorectical research seemd at times obscure and too absract, and once the actual develop- ment started it was referenced a number of times and only then became more understandble. 2.1 Research objectives The main objective of this research project was to get familiar with the object-oriented mindset and how it can be implemented in Lingo. In order to accomplish this goal a program was written in Lingo using the object-oriented paradigm, which served as an important experimental ground. The secondary objective was to examine the difference between the two methodologies being pro- cedural and object-oriented programming and evaluate them in the context of the development process. 2.2 Theoretical research Prior to the practical research an extensive theoretical research was made to try and come to terms with object-oriented concepts such as encapsulation, inheritance, polymorphism and oth- ers. Most of the resources rightfully argued that these concepts are somewhat difficult to visualize and digest without practical practice and since adopting the object-oriented approach demanded a complete paradigm shift, these early stages seemed confusing and at times frustrating. Seeing as how object-oriented is a methodology that isn’t reserved to a one single language, a large part of the resources consisted of material, which had nothing to do with Lingo or Director and that allowed a wider view on the topic from the very beginning. 2.3 Practical research – concept and description The practical aspect of the research was to write a program in Lingo using the object-oriented para- digm. The concept that was chosen to serve as the creative framework of the program was titled “Creative ant farm” and it dictated the demands and requirements of the system. “Creative ant farm” is an experimental program with no commercial value at this point, in which the user is asked to create a pixilated drawing on a grid, and upon completion a group of animated ants reconstruct the drawing on the screen using different kinds of leafs. This specific idea seemed ideal for a project dealing with object-oriented concepts due to the fact that a main part of the program will have to be a “living” element (the ant) which will have to du- plicated and allow each instance to display a different behavior and act independently. It will prove to be an important lesson in understanding the nature of polymorphism and the ability of instances of a class to display individual property values, which result in an individual behavior. SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 5. CREATIVEANTFARM an experiment in object-oriented lingo programming 2.0 Research description 2.3.1 Program storyboard 1st stage – creating a grid After an introduction screen, the user is asked to enter 2 parameters that will define the size of the grid: the total number of cells and the number of cells in arrow. To avoid a situation where the grid gets outside the movie (100 cell and 2 cells in a row will result in 50 rows) once the user defined the total cells and presses on the 2nd field, a message appears which display the valid range the user can choose from as the value. In any case invalid values are entered, the program outputs an alert mes- sage. SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 6. CREATIVEANTFARM an experiment in object-oriented lingo programming 2.0 Research description 2.3.1 Program storyboard 2nd stage – creating the drawing Once the grid is created, the user starts selecting cells by clicking them and changes their color. He can deselect a cell selection by selecting it again. The screen also of- fers the user to go back to previous screen and define a new grid in case he wishes to do. SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 7. CREATIVEANTFARM an experiment in object-oriented lingo programming 2.0 Research description 2.3.1 Program storyboard 3rd stage – reconstructing the drawing When the user presses the “done” button the screen clears and from this moment on there is no more interaction with the program. Animated ants appear from different directions carrying a leaf heading toward a point on the screen. When they reach it they pause for a few seconds and then drop the leaf and continue moving till they are outside the screen. The end result is a complete reconstruction of the original drawing only on a larger scale and using leafs to visualize it. SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 8. CREATIVEANTFARM an experiment in object-oriented lingo programming 2.0 Research description 2.3.2 Classes description The object-oriented design of the program makes use of 6 classes. The following de- scription is relevant to get a first look of the logical structure object-oriented offers, and how a program runs on many objects that are all instances of a small group of classes. The number of instances is of less importance once the right and most effec- tive relationship between the classes is established. Designing that relationship was one of the more challenging aspects of the project. 1. AppManager Class - Initializes the program and creates the 2 manager objects: GridManager and AntManager. - Control the navigation inside the program. - Receives user input and checks validation of entry fields. - Receives user input on the grid. 2. GridManager Class - Creates the grid. - Updates the grid. - Removes the grid. 3. AppObject Class - Contains common methods such as doPuppet() and getLoc() and serves as a super class for AntClass and GridBlockClass. 4. Ant Class - Defines an ant object and includes all the properties and method, which generate the movement toward a target on screen. 5. GridBlock Class - Defines a grid block object. 6. SpriteManager - Controls the distribution of sprite numbers to which object that wishes to be puppeted. SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 9. CREATIVEANTFARM an experiment in object-oriented lingo programming 3.0 Paradigm shift – stepping into OOP Making the “switch” from procedural to object-oriented thinking was not an easy one. It demanded a new way of looking and analyzing things and a new unfamiliar approach to problem solving. At first it seemed less natural and intuitive, but as the development process progressed, it became obvious that once the mind has been set, the object-oriented thought can be just as intuitive and natural as the procedural one. As oppose to procedural programming, object-oriented felt stricter and logically more demanding. The delicate relationships between the classes and the fundamental concepts that must be upheld force a constant evaluation of the structure and logic. If in procedural programming there wasn’t a feeling that there is a limit on the number of routines (although you should always strive to keep it down to the absolute minimum), in object-oriented the question of whether or not a new class should be introduced is critical and even once such a class has been added question of possible in- heritance arise and the evaluation starts all over again. Not to say that object-oriented is more difficult or better, but it seemed that in object-oriented there are more consideration that may appear limiting but in a fact has the opposite effect. Since Lingo facilitates object-oriented programming on a very basic level (inheritance using the an- cestor property, class definition using parent scripts) it proved to be a good starting point to experi- ment with object-oriented programming. Not because is allows the developer to disregard object- oriented rules, on the contrary, it forces him to pay more attention and be more resilient since the programming environment doesn’t supply everything automatically. SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 10. CREATIVEANTFARM an experiment in object-oriented lingo programming 4.0 OOP vs. Procedural programming in Lingo As was described before, this research project sought to examine object-oriented programming in Lingo in comparisment to procedural programming, the difficulty was that the Director environment was designed with object-oriented in mind, and even if one makes no use of parent scripts or any object-oriented concept knowingly, the environment itself operates in an object-oriented manor. Behaviors, being an integral and fundamental part of any Director production, represent the ob- ject-oriented paradigm and benefits of reusing code through out a program by having properties, which allow each instance of the code to display different behavior based on a common and shared description. That being said, it is impossible to program in pure procedural manor even if the logic of the pro- gram is structured as a set of functions in movie scripts. Because Director offers object-oriented solution built in to its environment, the result of practicing procedural programming is a hybrid between procedural and object-oriented where the use of be- haviors represents the object-oriented part, and functions in movie script the procedural approach. So even a developer that isn’t familiar with the object-oriented methodology enjoys part of its ben- efits and advantages. Had the program been redesigned using the procedural paradigm in mind it probably would have looked and operated the same way as the object-oriented version since as a methodology it offers a means to an end, and shouldn’t have no bearing on the visual and functional aspect. The developer, not the user, will feel the difference in terms of work when it comes to updating the program, scale it, detect and fix bugs etc. To illustrate how the same task looks from two different programming views, the GridManager Class, which creates the grid has been translated into a pro- cedural routine, which appears to be doing the exact same thing. But when examined in the context of the overhaul system, the fact that in the object-oriented version all of the grid information is en- capsulated inside the gridManager object, ensures that the grid data can not be tampered with by any other part of the program resulting in errors and other problems. In the procedural version, the functions use global variables that are exposed to any other function in the program and can be accessed anytime from anywhere. A risk that object-oriented tackles by enforcing information hiding and protection. Another clear advantage when it comes to reducing the amount of code used in the program is the fact that the gridManager can be extended or inherit methods and properties from a super class. Had there been 5 more manager objects in the program, a method such ass addObjects() could have been inherited and written only once. That is an important feature that can not be imitated with functions. Although they can call each other and return values they can not be structured in such a way that will ensure greater flexibility and code reduction. SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 11. CREATIVEANTFARM an experiment in object-oriented lingo programming 5.0 Conclusions and personal findings Object-oriented is a way of solving problem. As a methodology that’s its essence. The object-ori- ented mindset may be hard to digest at first, and even then it takes time and practice to understand how to apply it to achieve the best possible result. The procedural approach appears to be more intuitive and because of that object-oriented tends to be regarded as a higher form of programming, when in fact, it shouldn’t be. It’s just different. Procedural programming may seem to be easier to practice, but once you get into the object-ori- ented mindset its hard to understand how did you ever program without it in mind, since it changes the way one perceives the programming language in relation to itself and other languages as well. Understanding objects helps to better understand how a software works and operates, and in case of packages such as Director and especially Flash (where there’s the ability to change/extend built-in objects) it allows the developer far greater creative freedom when it comes to coding. The object-oriented approach is becoming a sort of a standard and by understanding its concepts and features a developer can better adapt to new technological realities such as .NET and others. As for Lingo, I believe that it’s important to extend the built-in object-oriented environment Director offers and explore the realm of parent scripts and other object-oriented concepts. Eventhough Lingo facilitates basic object-oriented programming, it is still suficinte to design robust applications and get familiar with key concepts that can later be applied and extended in other lan- guages such as Java, C++, C#, ActionScript, JavaScript etc. Utilizing object-oriented programming in Lingo, as in any other programming environment, helps simplifiing a problem and consieving a better solution. That better solution will strive to reuse code in an efficiant way and offer a flexible approach to the program’s design. I found that object-oriented thinking is a philosopical and mental advanture. It makes the develop- ment process more challenging and rewarding. The end result is a simplified solution to a complex problem, which might be used as parts or as a whole in future projects. This project showed me how 1,000 different ants can be created out of a single class, and these ants represent windows in an application, characters in a game and anything else that can and should be classified in order to ensure maximum use of code and minimum time spent writing it. SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 12. CREATIVEANTFARM an experiment in object-oriented lingo programming 6.0 Resources Baylis. E., Bounds. J., Britton. D., Thevathasan. L., Director 8.5 Studio, Birmingham, UK: friends of ED, 2001. Small. P., Lingo Sorcery - The magic of lists, objects and intelligent agents, USA: John Wiley & Son Ltd, 2nd edition 1999. Drol. W., Object Oriented Macromedia Flash MX, USA: APress, 2002. Decker. R., Hirshfield. S., Programming Java - an introduction to programming using Java, USA: PWS Publishing Company, 1998. Building OOP applications in Flash 5 http://www.debreuil.com/docs/ch01_Intro.htm LingOOP: Object-Oriented Programming with Lingo & DreamLight Director Talisman Tips & Tricks http://www.dreamlight.com/insights/07/objects.htm http://www.director-online.com/howTo/UD_articles/OOP.html http://www.director-online.com/howTo/UD_articles/UD19.html Object Oriented Programming Concepts http://www.umsl.edu/~subraman/concepts_toc.html Introduction To Object-Oriented Programming http://bepp.8m.com/english/oop/ Object oriented thinking http://www.mcli.dist.maricopa.edu/director/misc/sorcery/wio0896c/sorcery/oot.htm Why Procedural is the Wrong First Paradigm if OOP is the Goal http://csis.pace.edu/~bergin/papers/Whynotproceduralfirst.html SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 13. CREATIVEANTFARM an experiment in object-oriented lingo programming 7.0 Appendix 1. GridManager Class compared with CreateGrid routine CreateGrid routine - the procedural approach global gridPropList,gridList,targetList,gridMode on initGrid xstart,ystart,rowLimit,totalBlocks,gridMember gridMode=true targetList=[0] gridList=[] gridPropList=[:] gridPropList.addProp(#xStart,xstart) gridPropList.addProp(#yStart,ystart) gridPropList.addProp(#blockMember,gridMember) gridPropList.addProp(#rowLimit,rowlimit) gridPropList.addProp(#totalBlocks,totalBlocks) puppetGrid() end on puppetGrid repeat with i=1 to gridPropList.getProp(#totalBlocks) tempSprNum=getFreeChannel() sprite(tempSprNum).puppet=true sprite(tempSprNum).scriptInstanceList.add(script(“gridBlock_script”).new()) gridList.add(sprite(tempSprNum)) sprite(tempSprNum).member=gridPropList.getProp(#blockMember) sprite(tempSprNum).loc=point(-100,-100) updatestage end repeat sendAllSprites(#setMode,”unselected”) calculatePos(gridPropList.getProp(#xStart),gridPropList.getProp(#yStart)) end on calculatePos startX,startY blockwidth=gridList[1].width blockY=startY blockX=startX-blockWidth blocksInRow=1 repeat with i=1 to gridPropList.getProp(#totalBlocks) blockX=blockX+blockWidth gridList[i].loc=point(blockX,blockY) blocksInRow=blocksInRow+1 if blocksInRow>gridPropList.getProp(#rowLimit) then blockY=blockY+blockWidth blockX=startX-blockWidth blocksInRow=1 end if end repeat end SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 14. CREATIVEANTFARM an experiment in object-oriented lingo programming 7.0 Appendix 1. GridManager Class compared with CreateGrid routine CreateGrid routine - the procedural approach (continue) on addToTargetList theItem repeat with i in targetList if i=theItem then targetList.deleteOne(theItem) put targetList abort end if end repeat repeat with i in targetList if i<>theItem then myCount=myCount+1 if myCount=targetList.count then targetList.add(theItem) put targetList myCount=0 exit repeat end if next repeat end if end repeat end on rescaleGrid toAdd repeat with i=1 to gridPropList.getProp(#totalBlocks) gridList[i].rect=gridList[i].rect.inflate(toAdd,toAdd) gridList[i].blend=30 end repeat gridMode=false calculatePos(gridPropList.getProp(#xStart),gridPropList.getProp(#yStart)) end on getFreeChannel repeat with i=1 to the lastChannel if sprite(i).member=member 0 of castLib 0 then return i exit repeat end if end repeat end SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 15. CREATIVEANTFARM an experiment in object-oriented lingo programming 7.0 Appendix 1. GridManager Class compared with CreateGrid routine GridManager Class - the object-oriented approach property _xstart,_ystart,_gridMember,_blocksInRow,_gridList,_rowlimit,_totalBlocks property _maxBlocks,_maxInRow,_maxInCol,_blockWidth,_gridMemberWidth,_minBlocks on new me me._gridList=[] me._maxBlocks=253 me._minBlocks=2 me._maxInRow=23 me._maxInCol=me._maxBlocks/me._maxInRow return me end on init me,xstart,ystart,rowLimit,totalBlocks me._xstart=xstart me._ystart=ystart me._gridMember=”gridBlock” me._rowLimit=rowlimit me._totalBlocks=totalBlocks me.puppetlist() end on addObj me,myObj me._gridList.add(myObj) add the actorlist,myObj end on puppetList me repeat with i=1 to me._gridList.count me._gridList[i].doPuppet(me._gridMember,point(-100,-100)) sprite(me._gridList[i]._sprite).scriptInstanceList[1]=script(“mouseeventsclass”).new(me._gridList[i]._ sprite,me._gridMember) end repeat me.calculatePos(me._xstart,me._ystart) end SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 16. CREATIVEANTFARM an experiment in object-oriented lingo programming 7.0 Appendix 1. GridManager Class compared with CreateGrid routine GridManager Class - the object-oriented approach (continue) on calculatePos me,startX,startY blockwidth=me._gridList[1].getWidth() blockY=startY blockX=startX-blockWidth me._blocksInRow=1 repeat with i=1 to me._totalBlocks blockX=blockX+blockWidth me._gridList[i].setLoc(point(blockX,blockY)) me._blocksInRow=me._blocksInRow+1 if me._blocksInRow>me._rowLimit then blockY=blockY+blockWidth blockX=startX-blockWidth me._blocksInRow=1 end if end repeat end on rescaleObjects me,toAdd repeat with i=1 to me._gridList.count me._gridList[i].rescale(toAdd) end repeat me._gridMemberWidth=me._gridlist[1].getwidth() me.calculatePos(me._xstart,me._ystart) end on updateGrid me,blockSprite,antAngle,leafMember repeat with i=1 to me._gridList.count if me._gridList[i].getSprite()=blockSprite then me._gridList[i].setAngle(antAngle) me._gridList[i].setMember(leafMember) me._gridList[i].visibleMode(100) exit repeat end if end repeat end on destroy me repeat with i=1 to me._gridList.count me._gridList[i].remove() me._gridList[i].destruct() me._gridList[i]=void end repeat end SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies
  • 17. CREATIVEANTFARM an experiment in object-oriented lingo programming 7.0 Appendix 1. GridManager Class compared with CreateGrid routine GridManager Class - the object-oriented approach (continue) on getMaxBlocks me return me._maxBlocks end on getMinBlocks me return me._minBlocks end on getMaxInRow me return me._maxInRow end on getMaxInCol me return me._maxInCol end on setXYstart me,newXstart,newYstart me._xstart=newXstart me._ystart=newYstart end on destruct me me.destroy() me._xstart=void me._ystart=void me._gridMember=void me._blocksInRow=void me._gridList=[] me._rowlimit=void me._totalBlocks=void me._maxBlocks=void me._maxInRow=void me._maxInCol=void me._blockWidth=void me._gridMemberWidth=void me=void end SAE London - Multimedia Arts Degree // October 2002 // Module 103 - Basic Multimedia Studies