380 likes | 428 Views
CS1101: Programming Methodology http://www.comp.nus.edu.sg/~cs1101x/. Java Appreciation. Java Appreciation. OR What’s In Store In CS1101?. by Aaron Tan. Exercising Your Choice. CS1101 or CS1101S. Java. Scheme. CS1101: Course Description.
E N D
CS1101: Programming Methodologyhttp://www.comp.nus.edu.sg/~cs1101x/
Java Appreciation Java Appreciation OR What’s In Store In CS1101? by Aaron Tan
Exercising Your Choice CS1101 or CS1101S Java Scheme
CS1101: Course Description “This module introduces the fundamental concepts of programming from an object-oriented perspective, and is perceived as the first and foremost introductory course to computing.” No prior experience is assumed.
CS1101: Objectives • Learning about programming methodology and principles, using the object-oriented model. • Outcomes: • Know how to solve simple algorithmic problems. • Know how to write good small programs. • JAVA is merely a tool. • This is not a course on just JAVA alone!
CS1101: Lecture Groups • Group X (3 lecture groups): • Mr Aaron Tan Tuck Choy (Module coordinator) • For students with more experience • Group Y (3 lecture groups): • A/P Lee Mong Li • A/P Wynne Hsu • Dr Razvan Voicu • Group Z (3 lecture groups): • A/P Tan Chew Lim • Dr Anthony Fang • Mr Henry Chia CS1101X, Y and Z all cover the same syllabus, and have common tests. Final grading of CS1101X, Y and Z is done together as a single group.
Module Website • http://www.comp.nus.edu.sg/~cs1101x/
Workload (5 MCs) • Lectures: • 3 hours/week in a lab setting. • Discussion: • 2 hours/week in a lab setting. • Continual assessment: • Lab assignments • Mid-term test • Practical Exam
Skills Set (1/2) Java constructs Problem solving Program
Skills Set (2/2) • Java constructs (transferable skills) • Class and objects; types and variables; control constructs (selection, repetition); APIs; arrays; exceptions; applications (searching, sorting). • Problem solving (more transferable skills) • Programming methodology (development cycle, top-down design, modularity); testing and debugging; abstraction. • Others • Software tools (editor, compiler, debugger, CourseMarker); mathematical maturity.
Method body A Java Program (Hello.java) Comments // Display a message. public class Hello { public static void main(String[] args) { System.out.println("Hello World!! :-D"); } } Class name Method name Output
A Java Program (Welcome.java) API package // Author: Aaron Tan // Purpose: Ask for user’s name and display a welcome message. import java.util.*; public class Welcome { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("What is your name? "); String name = scanner.next(); System.out.println("Hi " + name + "."); System.out.println("Welcome to CS1101!\n"); } } Creating a Scanner object Input An object of class String
Object-Oriented Programming (OOP) • The fundamental OOP concept: An object-oriented program uses objects. • Demo on BlueJ: • Illustrate concepts of object and class • Creation of objects • Sending messages to objects
Objects and classes (1/2) • Object-oriented language • Models real-world objects you find in everyday life. • Objects • Represent ‘things’ from the real world, or from some problem domain (“that red 1200cc Honda car”, “my 2-year old Persian cat with a short tail”). • Have name, state (set of values for its attributes) and behaviors (via methods). • Perform actions or interact by sending messages. • Classes • Represent all objects of a kind (“car”, “cat”). • A class is a model/blueprint/prototype for an object. An object is an ‘instance’ of a class. Many instances (objects) can be created from a single class.
Objects and classes (2/2) • Class is a concept; object is a concrete entity. • A class defines what attributes an object has, but each object stores it own set of values, which contribute its state. • Example: PlayingCards is a class, whose properties are rank and suit. The queen of clubs and nine of diamonds are two instances (objects) of this class. • New class (type of objects) can be derived from an existing class. • Superclass and subclass: the subclass extends/specializes the functionality of the superclass and inherits the properties and behaviors of the superclass.
BlueJ • Designed at Monash University, Australia. • Runs on top of Sun Microsystems’ Java Development Kit (JDK). • Provides an Integrated Development Environment (IDE) with editor, compiler and debugger. • Simple user interface, easy to use. Do not need to write complete application. • Refer to course websitehttp://www.comp.nus.edu.sg/~cs1101x/(click on “Resources…” “Online”) • Download BlueJ and its documentation.
BlueJ: Creating objects (1/4) • Choose example shapes. • Classes: Square, Circle, Triangle, Canvas.
BlueJ: Creating objects (2/4) • Creating a new object Right click on Circle class and choose new Circle() to create a new Circle object. Circle() is a constructor.
BlueJ: Creating objects (3/4) • Creating a new object
BlueJ: Creating objects (4/4) • Creating a new object A new Circle object circle1 is created.
BlueJ: Calling methods (1/3) • Methods implement the behavior of the objects. Right click on the circle1 object and select the makeVisible() method.
BlueJ: Calling methods (2/3) • Methods implement the behavior of the objects. Experiment with other methods: makeInvisible(), moveDown(), moveRight().
BlueJ: Calling methods (3/3) • Methods with parameters: • changeColor(newcolor), changeSize(newDiameter), moveHorizontal(distance).
BlueJ: State (1/2) • State: the set of values of all the attributes of an object. Right click on the circle1 object and select the Inspect function.
BlueJ: State (2/2) • Objects of the same class have the same fields/attributes. But each object may have it own set of values for its attributes. State of circle1 object. Fields: int diameter int xPosition int yPosition String Color boolean isVisible
BlueJ: Source code (1/8) • Right click on class Circle and select “Open Editor”. import java.awt.*; import java.awt.geom.*; /** * A circle that can be manipulated and that draws itself * on a canvas. * @author Michael Kolling and David J. Barnes * @version 1.0 (15 July 2000) */ public class Circle { private int diameter; private int xPosition; private int yPosition; private String color; private boolean isVisible;
BlueJ: Source code (2/8) // Create a new circle at default position with default color. public Circle( ) { diameter = 30; xPosition = 20; yPosition = 60; color = "blue"; isVisible = false; } // Make this circle visible. If it was already visible, do nothing. public void makeVisible( ) { isVisible = true; draw( ); } // Make this circle invisible. If it was already invisible, do nothing. public void makeInvisible( ) { erase( ); isVisible = false; }
BlueJ: Source code (3/8) // Move the circle a few pixels to the right. public void moveRight( ) { moveHorizontal(20); } // Move the circle a few pixels to the left. public void moveLeft( ) { moveHorizontal(-20); } // Move the circle a few pixels up. public void moveUp( ) { moveVertical(-20); } // Move the circle a few pixels down. public void moveDown( ) { moveVertical(20); }
BlueJ: Source code (4/8) // Move the circle horizontally by 'distance' pixels. public void moveHorizontal(int distance) { erase( ); xPosition += distance; draw( ); } // Move the circle vertically by 'distance' pixels. public void moveVertical(int distance) { erase( ); yPosition += distance; draw( ); }
BlueJ: Source code (5/8) // Slowly move the circle horizontally by 'distance' pixels. public void slowMoveHorizontal(int distance) { int delta; if (distance < 0) { delta = -1; distance = -distance; } else { delta = 1; } for (int i = 0; i < distance; i++) { xPosition += delta; draw( ); } }
BlueJ: Source code (6/8) // Slowly move the circle vertically by 'distance' pixels. public void slowMoveVertical(int distance) { int delta; if (distance < 0) { delta = -1; distance = -distance; } else { delta = 1; } for (int i = 0; i < distance; i++) { yPosition += delta; draw( ); } }
BlueJ: Source code (7/8) // Change the size to the new size (in pixels). // Size must be >= 0. public void changeSize(int newDiameter) { erase( ); diameter = newDiameter; draw( ); } // Change the color. Valid colors are "red", "yellow", // "blue", "green", "magenta" and "black". public void changeColor(String newColor) { color = newColor; draw( ); }
BlueJ: Source code (8/8) // Draw the circle with current specifications on screen. private void draw( ) { if (isVisible) { Canvas canvas = Canvas.getCanvas( ); canvas.draw(this, color, new Ellipse2D.Double(xPosition, yPosition, diameter, diameter)); canvas.wait(10); } } // Erase the circle on screen. private void erase( ) { if (isVisible) { Canvas canvas = Canvas.getCanvas( ); canvas.erase(this); } } }
Problem Solving (1/3) • Problem Algorithm Program • Task 1: Anagram • Text that is formed by rearrangement of letters. • Examples: • Dear = • Astronomer = • The Eyes = • The Morse Code = • A Decimal Point = Read Moon Starer They See Here Come Dots I’m A Dot In Place
Problem Solving (2/3) • Task 2: Maze
Problem Solving (3/3) • Task 3: Sudoku
Think About It • This set of slides will be available at • http://www.comp.nus.edu.sg/~cs1101x • Administrative and registration issues • Please attend Course Briefing later – important! • LT17, 28 July @ 2pm (after Dean’s Welcome Tea) • Questions?