Marine Biology Simulation Part II: Assignment, Milestone 1

Slides:



Advertisements
Similar presentations
Marine Biology Simulation Part I: Introduction Dung “Zung” Nguyen Mathias Ricken Stephen Wong TeachJava 2004! June 25, 2004.
Advertisements

Using Eclipse. Getting Started There are three ways to create a Java project: 1:Select File > New > Project, 2 Select the arrow of the button in the upper.
Games and Simulations O-O Programming in Java The Walker School
Program: Little Crab Mr Gano.
Georgia Institute of Technology DrJava Appendix A Barb Ericson Georgia Institute of Technology May 2006.
Design Patterns for Marine Biology Simulation Dung “Zung” Nguyen Mathias Ricken Stephen Wong Rice University.
1 Frameworks. 2 Framework Set of cooperating classes/interfaces –Structure essential mechanisms of a problem domain –Programmer can extend framework classes,
What Is a Factory Pattern?.  Factories are classes that create or construct something.  In the case of object-oriented code languages, factories construct.
Games and Simulations O-O Programming in Java The Walker School
Test. A software house decides to develop a DVD renting program. The product manager identifies the following requirements: Every DVD will have a title,
Microsoft Visual Basic 2005 CHAPTER 8 Using Procedures and Exception Handling.
Java: Chapter 1 Computer Systems Computer Programming II Aug
Object Oriented Software Development
AP ® Marine Biology Simulation Case Study Alyce Brady Kalamazoo College.
AP ® Marine Biology Simulation Case Study Alyce Brady Kalamazoo College.
Marine Biology Simulation Case Study Alyce Brady Kalamazoo College.
Karel J Robot An introduction to BlueJ and Object- Oriented Programming.
Java: Chapter 1 Computer Systems Computer Programming II.
Copyright 2007, Information Builders. Slide 1 WebFOCUS Maintain – Enhancing Objects with JavaScript Mark Derwin Information Builders Information Builders.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
CPSC1301 Computer Science 1 Overview of Dr. Java.
Chapter 1 - Getting to know Greenfoot
Copyright © Curt Hill Turtles The beginning of media computation.
AP ® Marine Biology Simulation Case Study Alyce Brady Kalamazoo College.
Marine Biology Simulation Part II: Assignment, Milestone 1 Dung “Zung” Nguyen Mathias Ricken Stephen Wong TeachJava 2004! June 25, 2004.
Design Patterns for Marine Biology Simulation Dung “Zung” Nguyen Mathias Ricken Stephen Wong Rice University.
Nifty Assignments: Marine Biology Simulation OOPSLA ‘04 Educators’ Symposium October 25, 2004 Eric Cheng Mathias Ricken Dung “Zung” Nguyen Stephen Wong.
Programming in Java CSCI-2220 Object Oriented Programming.
CIS Intro to JAVA Lecture Notes Set July-05 GUI Programming – Home and reload buttons for the webbrowser, Applets.
Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.
 Objects versus Class  Three main concepts of OOP ◦ Encapsulation ◦ Inheritance ◦ Polymorphism  Method ◦ Parameterized ◦ Value-Returning.
Computer Science I Programming in Java (programming using Processing IN Java, using IntelliJ IDE) Classwork/Homework: copy your Processing projects over.
CIS Intro to JAVA Lecture Notes Set July-05 GUI Programming –TextField Action Listeners, JEditorPane action listeners, HTML in a JEditorPane,
Video in Macromedia Flash (Optional) – Lesson 121 Video in Macromedia Flash (Optional) Lesson 12.
CS2102: Lecture on Abstract Classes and Inheritance Kathi Fisler.
Week 12 - Monday.  What did we talk about last time?  Defining classes  Class practice  Lab 11.
Session 7 Introduction to Inheritance. Accumulator Example a simple calculator app classes needed: –AdderApp - contains main –AddingFrame - GUI –CloseableFrame.
Aquarium Lab Series Developed by Alyce BradyAlyce Brady of Kalamazoo CollegeKalamazoo College.
Chapter 2 – The Little Crab Program:. Little Crab Scenario Inheritance: The Arrows Denote Hierarchy Crab is an Animal Animal is an Actor Therefore, It.
Design Patterns. Outline Purpose Purpose Useful Definitions Useful Definitions Pattern Overview Pattern Overview.
Duke CPS Programming Heuristics l Identify the aspects of your application that vary and separate them from what stays the same ä Take what varies.
Internet Computing Module II. Syllabus Creating & Using classes in Java – Methods and Classes – Inheritance – Super Class – Method Overriding – Packages.
Georgia Institute of Technology Comic Strip Analysis and Design Inheritance, Abstract Classes, and Polymorphism part1 Barb Ericson Georgia Institute of.
Georgia Institute of Technology More on Creating Classes Barb Ericson Georgia Institute of Technology June 2006.
Appendix A Barb Ericson Georgia Institute of Technology May 2006
Module Road Map Refactoring Why Refactoring? Examples
Appendix A Barb Ericson Georgia Institute of Technology May 2006
Marine Biology Simulation Part I: Introduction
Low Budget Productions, LLC
Putting Objects in Motion
Eclipse Navigation & Usage.
Testing and Debugging.
CompSci 230 Software Construction
Creating and Modifying Text part 2
Using Procedures and Exception Handling
Interfaces and Inheritance
Inheritance "Question: What is the object oriented way of getting rich? Answer: Inheritance.“ “Inheritance is new code that reuses old code. Polymorphism.
Lecturer: Mukhtar Mohamed Ali “Hakaale”
Polymorphism Phil Tayco San Jose City College Slide version 1.1
Nifty Assignments: Marine Biology Simulation
Marine Biology Simulation Part III: Assignment, Milestone 2
Java – Inheritance.
Design Patterns for Recursive Descent Parsing
Topic 1: Problem Solving
Workshop for Programming And Systems Management Teachers
Building Java Programs
More on Creating Classes
OOPSLA ’04 Educator’s Symposium
The beginning of media computation Followed by a demo
Workshop for Programming And Systems Management Teachers
Presentation transcript:

Marine Biology Simulation Part II: Assignment, Milestone 1 Dung “Zung” Nguyen Mathias Ricken Stephen Wong TeachJava 2004! June 25, 2004

Rice MBS Assignment Target Audience Length of Assignment Students at the end of an objects-first CS2 Length of Assignment Two milestones Approximately 10 hours of work Probably supported by one or two labs The Role of Programming: Vital skill Should be mastered early Usually taught imperative-first

Studying the Case Study White-box Framework: Extension by Subclassing Re-implement as per given specs. Pedagogy: Modular design enables students to work on smaller pieces Give jar files of framework to start Students guided by unit test requirements Exercises: new fish, new environments add features (e.g. breeding, eating, etc) Re-implementation of initially supplied compiled classes. UnboundedEnv SimpleFish Unit tests guide the way Variant Environment Behavior Variant Fish Behavior

Studying the Case Study Static Behavior! Separate the variants from the invariants + void move() Strategy Pattern Dynamic Behavior Change

Rice MBS Assignment Milestone 1 Milestone 2 Part 1: KnightFish Add a new fish species to the simulation Part 2: WrappingEnv Add a new kind of environment Milestone 2 Part 3: Internals Re-implement parts of the simulation framework Part 4: Behavior Strategies Refactor framework to allow dynamic behavior changes

Preparation Read assignment document Download materials for Milestone 1 milestone1.zip Unzip into empty directory Open DrJava Copy your drjava.jar into the project directory

Configuring DrJava Add RiceMBSfw.jar file to “Extra Classpath” Edit, Preferences, Resource Locations Click on “Add” button Click on RiceMBSfw.jar file and “Select” Click on “OK” at the bottom of the dialog Now the framework has been added and can be used without source Make sure you run in “Full Java”

Running the Simulation In the “Interactions” pane, type java controller.MBSController Play around with the simulation Create new environment Edit environment Add fish Run simulation

Part 1: KnightFish 1 2 8 3 7 4 6 5 Randomly pick one of 8 targets Example: 3 1 2 8 3 7 4 6 5

Part 1: KnightFish 3 Turn into right direction Attempt one step forward If blocked, done If open, go there 3

Part 1: KnightFish 3 Attempt a second step Turn into right direction If blocked, done If open, go there Turn into right direction 3

Part 1: KnightFish 3 Attempt the third and last step If blocked, done If open, go there 3

Part 1: KnightFish 3 Moves almost like a knight, except… No jumping If blocked, might stop on the way 3 Stop here Stop here Stop here

Part 1: KnightFish Complicated behavior Delegation method Procedural programming: many nested if-statements Delegation method Nested visitors Cannot forget to handle a situation (compiler error!) Process flow diagramming Makes designing complex algorithm a systematic process

Part 1: KnightFish Students do this assignment Most of the code can be taken from existing examples For lack of time, we will do something simpler Fish attempts to move forward If blocked, turn around 180 degrees If open, go there Open TeachFish.java in model.fish

Part 1: KnightFish protected void move() tryMoveFwd( , ); } Ask local environment to move forward protected void move() tryMoveFwd( , ); } new ILambda() { public Object apply(Object notUsed) { turnRight(Math.PI); return null; } Command to execute if blocked new ILambda() { public Object apply(Object moveCmd) { ((ILambda)moveCmd).apply(null); return null; } ((ILambda)moveCmd).apply(null); Tell the local environment to actually move the fish Command to execute if unblocked

New fish class loaded at runtime! Part 1: KnightFish Compile the file Run the simulation Create a new environment, and edit it Add a fish Select “Add…” Enter model.fish.TeachFish and hit “Create” Click somewhere on the map New fish class loaded at runtime!

Part 2: WrappingEnv Grid-based, bounded, and rectangular environment If the fish leaves on one side, it re-enters from the other side Topology: torus (donut)

Part 2: WrappingEnv Very similar to BoundedEnv In BoundedEnv, the Location class computes a neighboring location by adding a direction vector to its own coordinates. The new coordinates might be inside or outside the environment. Can new coordinates ever be outside in WrappingEnv? No! It wraps around!

If you go from 0 to the left, you end up at (width-1)! Part 2: WrappingEnv The leftmost x-coordinate that is still inside the environment is 0. The rightmost one is (width-1). In BoundedEnv, the x-coordinate of the neighbor from there to the left is -1. What’s the x-coordinate of the left neighbor in WrappingEnv? If you go from 0 to the left, you end up at (width-1)!

Inheritance! Let WrappingEnv extend BoundedEnv Part 2: WrappingEnv The necessary changes are centralized in a single method, WrappingEnv.Location.getNeighbor. Since BoundedEnv and WrappingEnv are so similar, what OO technique can we apply to maximize code-reuse? Inheritance! Let WrappingEnv extend BoundedEnv

Part 2: WrappingEnv Need to write constructors The framework uses factory methods Abstract creation To complete the environment, we have to override the factory methods WrappingEnv.makeLocation WrappingEnv.makeEnvFactory (code provided for makeEnvFactory) Students’ code is still based on existing code, but cannot simply be copied and modified anymore

Part 2: WrappingEnv Open WrappingEnv.java in sysModel.env The project was split into “model” and a “sysModel” packages to clearly separate system code (environments) from user code (fish) Fish more likely to get changed than environments Edit the WrappingEnv.Location.getNeighbor method Students would have to do a little bit more

Part 2: WrappingEnv public ASquareEnv.Location getNeighbor(Direction dir) { double newX = getX() + dir.getDeltaX(); double newY = getY() + dir.getDeltaY(); if (newX < 0) { newX = _width + newX; } else if (newX >= _width) { newX = newX - _width; if (newY < 0) { newY = _height + newY; else if (newY >= _height) { newY = newY - _height; return makeLocation(newX,newY);

Part 2: WrappingEnv Compile the file Run the simulation Create a new environment Select “Add…” Enter sysModel.env.WrappingEnv and hit “Create” Pick a size and create the environment Add fish

End of Milestone 1 Students submit code for Part 1 and Part 2 Material for Milestone 2 gets released after submission deadline Contains solutions for Milestone 1