aalborg media lab 17-jun-15 software design lecture 4 “ using classes & objects”

Post on 20-Dec-2015

214 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Aalborg Media LabApr 18, 2023

Software Design

Lecture 4

“ Using Classes & Objects”

Aalborg Media LabApr 18, 2023

Using Classes and Objects

• New Homepage:

– http://home1.stofanet.dk/software-design/florian.pilz@stofanet.dk

• Chapter 3

– predefined objects (Strings)

– creating and using objects

– class libraries (ex. Math class)

Aalborg Media LabApr 18, 2023

Introduction to Objects• A class represents a concept, and an object

represents the embodiment of a class

• An object represents something with which we can interact in a program

• A class can be used to create multiple objects

• An object provides a collection of services that we can tell it to perform for us

• The services are defined by methods in a class that defines the object

Aalborg Media LabApr 18, 2023

Objects and Classes

Bank Account

A class(the concept)

John’s Bank AccountBalance: $5,257

An object(the realization)

Bill’s Bank AccountBalance: $1,245,069

Mary’s Bank AccountBalance: $16,833

Multiple objectsfrom the same class

Aalborg Media LabApr 18, 2023

Inheritance• Classes can be organized into inheritance

hierarchies

Bank Account

Account

Charge Account

Savings Account

Checking Account

Aalborg Media LabApr 18, 2023

Using Objects (System.out)

• The System.out object represents a destination to which we can send output

• In the first program, we invoked the println method of the System.out object:

System.out.println ("What is the frequency Kenneth?");

object methodinformation provided to the method

(parameters)

Aalborg Media LabApr 18, 2023

Creating Objects

• A variable holds either a primitive type or a reference to an object

• A class name can be used as a type to declare an object reference variable: String title;

• No object is created with this declaration. An object reference variable holds the address of an object and must itself be created separately.

Aalborg Media LabApr 18, 2023

Creating Objects

-

-

num

name

int num;String name;

42num

name

num = 42;name = new String(“Mike”);

Mike

Aalborg Media LabApr 18, 2023

Creating Objects• Generally, we use the new operator to create an object

title = new String (“Mike");

This calls the String constructor, which isa special method that sets up the object

• Creating an object is called instantiation• An object is an instance of a particular class

Aalborg Media LabApr 18, 2023

Aliasesname1 = new String(“Mike”); name2 = new String(“Robert”);

name1 Mike

name2 Robert

name1 = name 2;

name1

name2 Robert

Aalborg Media LabApr 18, 2023

String Objects

• Because strings are so common, we don't have to use the new operator to create a String object

title = "Java Software Solutions";

• Once an object has been instantiated, we can use the dot operator to invoke its methods

title.length()

Aalborg Media LabApr 18, 2023

String Methods

• The String class has several methods that are useful for manipulating strings

• Many of the methods return a value, such as an integer or a new String object

• See the list of String methods in fig. 3.1 p. 119(listing 3.1)

Aalborg Media LabApr 18, 2023

public class StringMutation{ public static void main (String[] args) { String phrase = "Change is inevitable"; String mutation1, mutation2, mutation3, mutation4;

System.out.println ("Original string: \"" + phrase + "\""); System.out.println ("Length of string: " + phrase.length());

mutation1 = phrase.concat (", except from vending machines."); mutation2 = mutation1.toUpperCase(); mutation3 = mutation2.replace ('E', 'X'); mutation4 = mutation3.substring (3, 30);

System.out.println ("Mutation #1: " + mutation1); System.out.println ("Mutation #2: " + mutation2); System.out.println ("Mutation #3: " + mutation3); System.out.println ("Mutation #4: " + mutation4);

System.out.println ("Mutated length: " + mutation4.length()); }}

Aalborg Media LabApr 18, 2023

mutation1

“Change is inevitable, except from vending machines”

mutation2

“CHANGE IS INEVITABLE … MACHINES”

mutation3

“CHANGX IS INXVITABLX … MACHINXS.”

mutation4

“NGX IS INXVITABLX, XXCXPT F”

Aalborg Media LabApr 18, 2023

Packages

• The classes of the Java standard class library are organized into packages

Package

java.langjava.appletjava.awtjavax.swingjava.netjava.utiljavax.xml.parsers

Purpose

General supportCreating applets for the webGraphics and graphical user interfacesAdditional graphics capabilities and componentsNetwork communicationUtilitiesXML document processing

Aalborg Media LabApr 18, 2023

The import Declaration

• When you want to use a class from a package, you could use its fully qualified name or import it.

java.util.Random

import java.util.Random;

import java.util.*;

Aalborg Media LabApr 18, 2023

The import Declaration

• All classes of the java.lang package are imported automatically into all programs

• That's why we didn't have to import the System or String classes explicitly in earlier programs

• The Random class is part of the java.util package, which provides methods that generate pseudorandom numbers. (listing 3.2)

Aalborg Media LabApr 18, 2023

public class RandomNumbers{ public static void main (String[] args) { Random generator = new Random(); int num1; float num2;

num1 = generator.nextInt(); System.out.println ("A random integer: " + num1);

num1 = generator.nextInt(10); System.out.println ("From 0 to 9: " + num1);

num1 = generator.nextInt(10) + 1; System.out.println ("From 1 to 10: " + num1); }}

Aalborg Media LabApr 18, 2023

Class Methods

• Some methods can be invoked through the class name, instead of through an object of the class

• These methods are called class methods or static methods

• The Math class contains many static methods, providing various mathematical functions. such as absolute value, trigonometry functions, square root, etc.

value = Math.abs(total) + Math.pow(count,4)

Aalborg Media LabApr 18, 2023

Wrapper Classes

• A wrapper class represents a particular primitive type

Integer ageObj = new Integer (20);

uses the Integer class to create an object which effectively represents the integer 20 as an object

• This is useful when a program requires an object instead of a primitive type

Aalborg Media LabApr 18, 2023

Wrapper Classes• There is a wrapper class in the java.lang

package for each primitive type:

byte Byte

short Short

int Integer

long Long

float Float

double Double

Aalborg Media LabApr 18, 2023

Wrapper Classes

• Wrapper classes contain static methods that help manage the associated type

– Integer class contains a method to convert an integer stored in a String to an int value:

num = Integer.parseInt (str);

Aalborg Media LabApr 18, 2023

Components and Containers

• Containers are special GUI components that hold and organize other components

– Frame(is displayed as a separate window)

– Panel(can only be displayed as part of another container)

• All visible elements are displayed in a frame’s content pane

Aalborg Media LabApr 18, 2023

Components and Containers

• Components and Containers are classes and must be instantiated in order be used.

• These have methods the control of the visual-appearance / behavior (size, color, etc.).

• Every container is managed by a layout manager.

Aalborg Media LabApr 18, 2023

import java.awt.*;import javax.swing.*;

public class Authority{ public static void main (String[] args) { JFrame frame = new JFrame ("Authority");

frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

JPanel primary = new JPanel(); primary.setBackground (Color.yellow);

Listing 3.7

Aalborg Media LabApr 18, 2023

Listing 3.7

primary.setPreferredSize (new Dimension(250, 75)); JLabel label1 = new JLabel ("Question authority,"); JLabel label2 = new JLabel ("but raise your hand first."); primary.add (label1); primary.add (label2);

frame.getContentPane().add(primary); frame.pack(); frame.setVisible(true); }}

Aalborg Media LabApr 18, 2023

Nested Panels• Nested Panels are used to create an intricate

containment hierarchy of components.

–JFrame •JPanel

–Label–Label

–JFrame •JPanel

–JPanel»Label

–JPanel»Label

Aalborg Media LabApr 18, 2023

Listing 3.8import java.awt.*;import javax.swing.*;

public class NestedPanels{ public static void main (String[] args) { JFrame frame = new JFrame ("Nested Panels"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

// Set up first subpanel JPanel subPanel1 = new JPanel(); subPanel1.setPreferredSize (new Dimension(150, 100)); subPanel1.setBackground (Color.green); JLabel label1 = new JLabel ("One"); subPanel1.add (label1);

Aalborg Media LabApr 18, 2023

Listing 3.8 // Set up second subpanel JPanel subPanel2 = new JPanel(); subPanel2.setPreferredSize (new Dimension(150, 100)); subPanel2.setBackground (Color.red); JLabel label2 = new JLabel ("Two"); subPanel2.add (label2);

// Set up primary panel JPanel primary = new JPanel(); primary.setBackground (Color.blue); primary.add (subPanel1); primary.add (subPanel2);

frame.getContentPane().add(primary); frame.pack(); frame.setVisible(true); }}

Aalborg Media LabApr 18, 2023

Images with Labels

• Icons as JPEG or GIF– new Icon(“devil.gif”)

• A label can contain text, an image or both– new JLabel(String);– new JLabel(String, Icon, int horizontalAlignment)

• Labels may use orientation constants:– SwingConstants.CENTER

Aalborg Media LabApr 18, 2023

Exercises

• 3.1 – 3.5

DO NOT READ INPUT FROM USERUSE CONSTANTS!!

final int x1 = 14;final int y1 = 15;

top related