© A+ Computer Science - www.apluscompsci.com Visit us at www.apluscompsci.com Full Curriculum Solutions M/C Review Question Banks Live Programming Problems Tons of great content! www.facebook.com/APlusComputerScience © A+ Computer Science - www.apluscompsci.com © A+ Computer Science - www.apluscompsci.com -Read all 4 questions before writing anything -answer the easiest question 1st -most times question 1 is the easiest -see if part B calls part A and so on -many times part C consists of A and B calls -write something on every question -write legibly / use PENCIL!!!!!!!!!! -keep track of your time © A+ Computer Science - www.apluscompsci.com -When writing methods -use parameter types and names as provided -do not redefine the parameters listed -do not redefine the methods provided -return from all return methods -return correct data type from return methods © A+ Computer Science - www.apluscompsci.com -When writing a class or methods for a class -know which methods you have -know which instance variables you have -check for public/private on methods/variables -return from all return methods -return correct data type from return methods © A+ Computer Science - www.apluscompsci.com -When extending a class -know which methods the parent contains -have the original class where you can see it -make sure you have super calls -check for public/private on methods/variables -make super calls in sub class methods as needed © A+ Computer Science - www.apluscompsci.com -When extending abstract / implementing interface -know which methods the parent contains -have the original class where you can see it -make sure you have super calls -check for public/private on methods/variables -make super calls in sub class methods as needed -implement all abstract methods in sub class © A+ Computer Science - www.apluscompsci.com -When writing GridWorld question -use the GridWorld quick reference -use original method code when overidding -use Bug and BoxBug code if extending Bug -use Critter and ChameleonCritter code if extending Critter -use Critter and Bug for extends demo -use Critter for ArrayList and Math.random() demo -use GW quick reference on the entire AP test © A+ Computer Science - www.apluscompsci.com ArrayList – get,set,remove,add,size Abstract / Interface – super / abstract GridWorld - location, actor, bug, critter, grid Hodgepodge – array/sort/search © A+ Computer Science - www.apluscompsci.com A typical ArrayList question involves putting something into an ArrayList and removing something from an ArrayList. © A+ Computer Science - www.apluscompsci.com Arraylist is a class that houses an array. An ArrayList can store any type. All ArrayLists store the first reference at spot / index position 0. © A+ Computer Science - www.apluscompsci.com int[] nums = new int[10]; nums //Java int array 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0 An array is a group of items all of the same type which are accessed through a single identifier. © A+ Computer Science - www.apluscompsci.com ArrayList frequently used methods Name Use add(item) adds item to the end of the list add(spot,item) adds item at spot – shifts items up-> set(spot,item) put item at spot get(spot) returns the item at spot size() returns the # of items in the list remove() removes an item from the list clear() removes all items from the list z[spot]=item return z[spot] import java.util.ArrayList; © A+ Computer Science - www.apluscompsci.com OUTPUT List ray = new ArrayList(); ray.add("hello"); h ray.add("whoot"); c ray.add("contests"); out.println(((String)ray.get(0)).charAt(0)); out.println(((String)ray.get(2)).charAt(0)); ray stores Object references. © A+ Computer Science - www.apluscompsci.com List<String> ray; OUTPUT ray = new ArrayList<String>(); ray.add("hello"); h ray.add("whoot"); c ray.add("contests"); out.println(ray.get(0).charAt(0)); out.println(ray.get(2).charAt(0)); ray stores String references. © A+ Computer Science - www.apluscompsci.com int spot=list.size()-1; while(spot>=0) { if(list.get(spot).equals("killIt")) list.remove(spot); spot--; } © A+ Computer Science - www.apluscompsci.com for(int spot=list.size()-1; i>=0; i--) { if(list.get(spot).equals("killIt")) list.remove(spot); } © A+ Computer Science - www.apluscompsci.com int spot=0; while(spot<list.size()) { if(list.get(spot).equals("killIt")) list.remove(spot); else spot++; } © A+ Computer Science - www.apluscompsci.com © A+ Computer Science - www.apluscompsci.com public boolean conflictsWith( Appointment other ) { return getTime().overlapsWith(other.getTime()); } attempt .5 correct .5 © A+ Computer Science - www.apluscompsci.com public void clearConflicts(Appointment appt) { int spot= 0; while (spot< apptList.size()) { Appointment currAppt = (Appointment)appList.get(spot); if (currAppt.conflictsWith(appt)) apptList.remove(spot); else spot++; attempt .5 } correct .5 } © A+ Computer Science - www.apluscompsci.com public void clearConflicts(Appointment appt) { } for( int spot = apptList.size()-1; spot>=0; spot-- ) { Appointment curr = (Appointment)appList.get(spot); if (curr.conflictsWith(appt)) apptList.remove(spot); } return cnt; attempt .5 correct .5 © A+ Computer Science - www.apluscompsci.com public boolean addAppt(Appointment appt, boolean emergency) { if( emergency ) { clearConflicts( appt ); } else { for( Appointment curr : appList ) if( appt.conflictsWith( curr ) ) return false; } return appList.add( appt ); } © A+ Computer Science - www.apluscompsci.com Visit us at www.apluscompsci.com Full Curriculum Solutions M/C Review Question Banks Live Programming Problems Tons of great content! www.facebook.com/APlusComputerScience © A+ Computer Science - www.apluscompsci.com A typical Abstract/Interface question requires that a class be written that extends the abstract class or implements the interface and that all abstract method(s) be implemented. © A+ Computer Science - www.apluscompsci.com Abstract classes are used to define a class that will be used only to build new classes. No objects will ever be instantiated from an abstract class. © A+ Computer Science - www.apluscompsci.com Mammal (abstract class) Human Whale © A+ Computer Science - www.apluscompsci.com Cow Any sub class that extends a super abstract class must implement all methods defined as abstract in the super class. © A+ Computer Science - www.apluscompsci.com abstract class Monster{ private String myName; public Monster() { myName =""; } public Monster(String name) { myName =name; } public String getName() { return myName; } public abstract void talk( ); public String toString() { return myName + "\n"; } } © A+ Computer Science - www.apluscompsci.com Why define talk as abstract? public abstract void talk( ); Does each Monster say the exact same thing? © A+ Computer Science - www.apluscompsci.com class Vampire extends Monster { public Vampire( String name ) { super(name); } public void talk() { out.println("Vampire " + getName() + " say \"I want to drink your blood!\""); } } © A+ Computer Science - www.apluscompsci.com public abstract class APlus { public APlus(int x) //constructor code not shown public abstract double goForIt(); } //other fields/methods not shown Pet Item © A+ Computer Science - www.apluscompsci.com public class PassAPTest extends APlus { public PassAPTest(int x) { super(x); } public double goForIt() { double run=0.0; //write some code - run = x*y/z return run; } public abstract class APlus { public APlus(int x) //constructor code not shown public abstract double goForIt(); } //other fields/methods not shown //other fields/methods not shown } © A+ Computer Science - www.apluscompsci.com public interface Exampleable { int writeIt(Object o); int x = 123; } Methods are public abstract! Variables are public static final! © A+ Computer Science - www.apluscompsci.com public interface Exampleable { public abstract int writeIt(Object o); public static final int x = 123; } Methods are public abstract! Variables are public static final! © A+ Computer Science - www.apluscompsci.com An interface is a list of abstract methods that must be implemented. An interface may not contain any implemented methods. Interfaces cannot have constructors!!! © A+ Computer Science - www.apluscompsci.com Interfaces are typically used when you know what you want an Object to do, but do not know how it will be done. If only the behavior is known, use an interface. © A+ Computer Science - www.apluscompsci.com Abstract classes are typically used when you know what you want an Object to do and have a bit of an idea how it will be done. If the behavior is known and some properties are known, use an abstract class. © A+ Computer Science - www.apluscompsci.com © A+ Computer Science - www.apluscompsci.com public double purchasePrice() { return getListPrice() + getListPrice()* taxRate; } attempt .5 correct .5 © A+ Computer Science - www.apluscompsci.com public class Vehicle extends TaxableItem { private double dCost; private double dMarkup; } attempt .5 correct .5 public Vehicle(double cost, double markup, double tRate) { super(tRate); dMarkup = markup; dCost = cost; You must } public double getListPrice() { call super! return dMarkup + dCost; } public void changeMarkup(double markup) { dMarkup = markup; } © A+ Computer Science - www.apluscompsci.com Visit us at www.apluscompsci.com Full Curriculum Solutions M/C Review Question Banks Live Programming Problems Tons of great content! www.facebook.com/APlusComputerScience © A+ Computer Science - www.apluscompsci.com One question on the A test free response is usually a random question that is hard to predict. CustomerSort Robot Reservation © A+ Computer Science - www.apluscompsci.com This question usually involves an array and many times has sorting and searching components. © A+ Computer Science - www.apluscompsci.com © A+ Computer Science - www.apluscompsci.com public int compareCustomer(Customer other) { int cmp = getName().compareTo(other.getName()); if(cmp != 0) { return cmp; } } return getID() - other.getID(); attempt .5 correct .5 © A+ Computer Science - www.apluscompsci.com public static void preFixMerge(Customer[] list1, Customer[] list2, Customer[] result) { int front1 = 0; int front2 = 0; for( int i = 0; i < result.length; i++) { int cmp = list[front1].compareCustomer(list2[front2]); if( cmp < 0 ){ results[i] = list[front1]; front1++; } else if (cmp > 0){ result[i] = list2[front2]; front2++; } else { result[i] = list1[front1]; front1++; front2++; } } } attempt .5 correct .5 You must know merge sort! © A+ Computer Science - www.apluscompsci.com Visit us at www.apluscompsci.com Full Curriculum Solutions M/C Review Question Banks Live Programming Problems Tons of great content! www.facebook.com/APlusComputerScience © A+ Computer Science - www.apluscompsci.com One question on the A test free response will test the GridWorld Case Study. © A+ Computer Science - www.apluscompsci.com Location frequently used methods Name Use Location(row, col) creates a new row,col Location getCol() gets the column value for this location getRow() gets the row value for this location import info.gridworld.grid.Location; © A+ Computer Science - www.apluscompsci.com Location frequently used fields Name Use NORTH indicates going north – value of 0 SOUTH indicates going south – value of 180 EAST indicates going east – value of 90 WEST indicates going west – value of 270 import info.gridworld.grid.Location; © A+ Computer Science - www.apluscompsci.com Location locOne = new Location(2,1); Location locTwo = new Location(1,3); out.println(locOne.getAdjacentLocation(Location.NORTH)); out.println(locOne.getAdjacentLocation(Location.SOUTH)); out.println(locOne.getAdjacentLocation(Location.EAST)); out.println(locOne.getAdjacentLocation(Location.WEST)); out.println(locOne.getDirectionToward(locTwo)); 0,0 0,1 0,2 0,3 0,4 1,0 1,1 1,2 1,3 1,4 2,0 2,1 2,2 2,3 2,4 3,0 3,1 3,2 3,3 3,4 © A+ Computer Science - www.apluscompsci.com OUTPUT (1, 1) (3, 1) (2, 2) (2, 0) 45 Actor frequently used methods Name Use Actor() creates new blue north bound actor act() reverses the direction for actor getColor() gets the actor’s color getDirection() gets the actor’s direction getLocation() gets the actor’s location setColor(col) sets the actor’s color to col setDirection(dir) sets the actor’s direction to dir moveTo(loc) moves the actor to new location loc © A+ Computer Science - www.apluscompsci.com Actor frequently used methods Name Use putSelfInGrid(grid, loc) put this actor in grid at loc removeSelfFromGrid() takes this actor out of the grid getGrid() gets the grid which contains this actor toString() gets actor data as a String import info.gridworld.actor.Actor; © A+ Computer Science - www.apluscompsci.com ActorWorld world = new ActorWorld(); Actor dude = new Actor(); dude.setColor(Color.GREEN); dude.setDirection(Location.SOUTH); Location loc = new Location(2,2); world.add(loc, dude); world.show(); What happens if you click on an empty location? © A+ Computer Science - www.apluscompsci.com Grid abstract methods Name Use get(loc) returns the ref at location loc getEmptyAdjacentLocations(loc) gets the valid empty locs in 8 dirs getNeighbors(loc) returns the objs around this getNumCols() gets the # of cols for this grid getNumRows() gets the # of rows for this grid getOccupiedAdjacentLocations(loc) gets the valid locs in 8 dirs that contain objs getOccupiedLocations() gets locs that contain live objs getValidAdjacentLocations(loc) gets the valid locs in 8 dirs isValid(loc) checks to see if loc is valid put(loc, obj) put the obj in grid at location loc remove(loc) take the obj at location loc out of the grid import info.gridworld.grid.Grid; © A+ Computer Science - www.apluscompsci.com Grid is an interface that details the behaviors expected of a Grid. Grid was designed as an interface because many different structures could be used to store the grid values. An interface works perfectly due to the large number of unknowns. © A+ Computer Science - www.apluscompsci.com Bug extends Actor frequently used methods Name Use act() move if possible or turn getColor() gets the bug’s color getDirection() gets the bug’s direction getLocation() gets the bug’s location setColor(col) sets the bug’s color to col setDirection(dir) sets the bug’s direction to dir import info.gridworld.actor.Bug; © A+ Computer Science - www.apluscompsci.com Bug extends Actor frequently used methods – Bug only Name Use Bug() make a new red bug going north Bug(color) make a new color bug act() move if possible or turn canMove() check to see if a move is possible move() move forward and leave a flower turn() turn 45 degrees without moving import info.gridworld.actor.Bug; © A+ Computer Science - www.apluscompsci.com ActorWorld world = new ActorWorld(); Bug dude = new Bug(); world.add(new Location(3,3), dude); Bug sally = new Bug(Color.GREEN); sally.setDirection(Location.SOUTHEAST); world.add(new Location(2,2), sally); Bug ali = new Bug(Color.ORANGE); ali.setDirection(Location.NORTHEAST); world.add(new Location(1,1), ali); world.show(); © A+ Computer Science - www.apluscompsci.com The bug act method looks to see if a move is possible by calling canMove. canMove looks at the location in front of this bug to see if it is empty or if it contains a flower. canMove returns true or false. © A+ Computer Science - www.apluscompsci.com The bug act method calls move if canMove returns true. move calls moveTo to move the bug to the location in front of this bug. move leaves a flower in the old location. © A+ Computer Science - www.apluscompsci.com The bug act method calls turn if canMove returns false. turn changes the direction of the bug by 45 degrees to the right. © A+ Computer Science - www.apluscompsci.com Critter extends Actor frequently used methods Name Use getColor() gets the critter's color getDirection() gets the critter's direction getLocation() gets the critter's location setColor(col) sets the critter's color to col setDirection(dir) sets the critter's direction to dir import info.gridworld.actor.Critter; © A+ Computer Science - www.apluscompsci.com Critter extends Actor frequently used methods – Critter specific Name Use act() calls the methods listed below getActors() gets all actors around this location processActors(actors) do something to actors sent in getMoveLocations() gets list of possible move locs selectMoveLocation(locs) picks loc to move to makeMove(loc) moves this critter to loc import info.gridworld.actor.Critter; © A+ Computer Science - www.apluscompsci.com if no grid present – stop call getActors to get list of actors to proces processActors received from getActors call getMoveLocations to get a list of locations to which the critter might move call selectMoveLocation to select new location move to the new loc © A+ Computer Science - www.apluscompsci.com The getActors method returns an ArrayList containing all of the actors around this critter using the 4 cardinal(N,S,E,W) and 4 intercardinal directions(NE, NW, SE, SW). In order to change which actors are returned by getActors, override the method and provide a different method of selecting actors. getActors must not modify any actors. © A+ Computer Science - www.apluscompsci.com © A+ Computer Science - www.apluscompsci.com public Location dropLocationForColumn(int column) { for(int r = theEnv.getNumRows()-1; r>=0; r--) { Location loc = new Location(r, column); if(theEnv.isValid(loc) && theEnv.get(loc)==null) { return loc; } } } return null; attempt .5 correct .5 © A+ Computer Science - www.apluscompsci.com Visit us at www.apluscompsci.com Full Curriculum Solutions M/C Review Question Banks Live Programming Problems Tons of great content! www.facebook.com/APlusComputerScience © A+ Computer Science - www.apluscompsci.com -Read all 4 questions before writing anything -answer the easiest question 1st -most times question 1 is the easiest -see if part B calls part A and so on -many times part C consists of A and B calls -write something on every question -write legibly / use PENCIL!!!!!!!!!! -keep track of your time © A+ Computer Science - www.apluscompsci.com -When writing methods -use parameter types and names as provided -do not redefine the parameters listed -do not redefine the methods provided -return from all return methods -return correct data type from return methods © A+ Computer Science - www.apluscompsci.com -When writing a class or methods for a class -know which methods you have -know which instance variables you have -check for public/private on methods/variables -return from all return methods -return correct data type from return methods © A+ Computer Science - www.apluscompsci.com -When extending a class -know which methods the parent contains -have the original class where you can see it -make sure you have super calls -check for public/private on methods/variables -make super calls in sub class methods as needed © A+ Computer Science - www.apluscompsci.com -When extending abstract / implementing interface -know which methods the parent contains -have the original class where you can see it -make sure you have super calls -check for public/private on methods/variables -make super calls in sub class methods as needed -implement all abstract methods in sub class © A+ Computer Science - www.apluscompsci.com -When writing GridWorld question -use the GridWorld quick reference -use original method code when overidding -use Bug and BoxBug code if extending Bug -use Critter and ChameleonCritter code if extending Critter -use Critter and Bug for extends demo -use Critter for ArrayList and Math.random() demo -use GW quick reference on the entire AP test © A+ Computer Science - www.apluscompsci.com Visit us at www.apluscompsci.com Full Curriculum Solutions M/C Review Question Banks Live Programming Problems Tons of great content! www.facebook.com/APlusComputerScience © A+ Computer Science - www.apluscompsci.com