Encapsulation ◦ Blackbox concept Data and method(s) Hidden details InterfaceEffect(s) methods called class
RelationshipSymbol Line Style Arrow Tip Inheritance-is-a SolidTriangle Interface Implementation DottedTriangle Aggregation-has-a Solid Diamond Dependency DottedOpen UML Relationship Symbols Aggregation is a stronger form of dependency-see page 467
Place multiplicity notations near the ends of an association/ dependency. Multiplicity (Cardinality)
GJY 1..*
Establishes has-a relationship/association between classes BankAccount One can navigate from one class to another instantiation in Java – (note NOT inheritance)
package bankaccount; public class BankAccount { private double balance; public BankAccount () { balance=0; } public void deposit (double amount) { balance=balance+amount; } public void withdraw (double amount){ balance=balance - amount; } public double getBalance () { return balance; } package bankaccount; public class Bank { public static void main(String[] args) { BankAccount harrysChecking = new BankAccount(); harrysChecking.deposit( ); harrysChecking.withdraw(500.00); System.out.println(harrysChecking.getBalance()); } Review BankAccount
Lab: Part 1 1.Add the interest method to your BankAccount Class 2. Add an account with your name 3. Call interest for Harry and pass 5% or Call the interest method for your account and pass the parameter as Revise VISIO drawing accordingly
Chapter 8, pp pre & post conditions Section 8.5
Documentation included in form of comments ◦ Prior to a class ◦ Prior to a method ◦ Begins with “/**” and ends with “*/” Internal Method comments discouraged
Objective: Tells other programmers how to use the method! precondition documentation postcondition documentation
Precondition: describes the state of relevant identifiers prior to the function's execution. Includes a reference to what variables are passed to the function. Postcondition: describes the state after the function is executed: the state of attributes after execution the return value if any.
Do NOT: 1) Repeat code description! (code is hidden and user/programmer on needs to know what to expect and what must be supplies) 2) Describe how code works 3) Do not use attribute names unless meaningful
Precondition Publish preconditions so the caller won't call methods with bad parameters Preconditions
Method should let user know if condition is violated. Caution: Text might imply otherwise
Condition that is true after a method has completed The return value is computed correctly The object is in a certain state after the method call is completed Don't document trivial postconditions that repeat clause Postconditions
/** * precondition: Balance is available for an account amount >=0 * postcondition:The account balance is adjusted to reflect * the deposit. */ public void deposit (double amount) { System.out.println(amount); balance = balance + amount; }
Lab: Part 2 Enhance the BankAccount Class Add preconditions for all methods Add parameters to documentation as necessary Add postconditions where applicable Post Complete labs to DropBoxes located in September 19 th ANGEL Lesson Tab
Chapter 10
Inheritance : derive a new class from an existing one Parent class, or superclass, or base class. Thechild class or subclass. Component hierarchy:
is-a relationship between superclass and a subclass or base class
Deposit BankForm parent Is-a component of child
Business KMartMacys ServiceBusiness Kinkos RetailBusiness is-a
JAVA Example 1: class RetailBusiness extends Business Example 2: class CheckingAccount extends BankAccount { }
SavingsAccount object inherits the balance instance field from BankAccount, and gains one additional instance field: interestRate : Layout of a Subclass Object
public class BankAccount { private double balance; /** * PostCondition: A bank account with a zero balance. */ public BankAccount() { balance = 0; } initialBalance the initial balance PostCondition: A bank account with a given balance is constructed. */ public BankAccount(double initialBalance) { balance = initialBalance; } Continued Next Page
/** * PreCondition: a balance amount the amount to deposit PostCondition: Money is deposited into the bank account. */ public void deposit(double amount) { double newBalance = balance + amount; balance = newBalance; } /** * Precondition: A balance amount the amount to withdraw PostCondition: Money is withdrawn from the bank account. */ public void withdraw(double amount) { double newBalance = balance - amount; balance = newBalance; } /** PostCondition: Current balance of the bank account the current balance */ public double getBalance() { return balance; }} BankAccount Class Continued
package infsy535bankacctwithinheritance; public class SavingsAccount extends BankAccount { private double interestRate; rate the interest rate PostCondition: A bank account with a given interest rate. */ public SavingsAccount(double rate) { interestRate = rate; } /** PostCondition: Added the earned interest to the account balance. */ public void addInterest() { double interest = getBalance() * interestRate / 100; deposit(interest); } } Savings Account