310 likes | 374 Views
Advanced Objects (Dependencies and Documentation). Java Class Concept . Encapsulation Blackbox concept. methods called. Data and method(s) Hidden details. Interface. Effect(s). class. UML Relationship Symbols. Aggregation is a stronger form of dependency-see page 467.
E N D
Java Class Concept Encapsulation • Blackbox concept methods called Data and method(s) Hidden details Interface Effect(s) class
UML Relationship Symbols • Aggregation is a stronger form of dependency-see page 467
Multiplicity (Cardinality) • Place multiplicity notations near the ends of an association/ • dependency.
GJY 1..*
has-a relationship • Establishes has-a relationship/association between classes • BankAccount • One can navigate from one class to another • instantiation in Java – (note NOTinheritance)
package bankaccount; • public class Bank { • public static void main(String[] args) • { • BankAccountharrysChecking = new BankAccount(); • harrysChecking.deposit(2000.00); • harrysChecking.withdraw(500.00); • System.out.println(harrysChecking.getBalance()); • } • } • 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; • } • } Review BankAccount
Lab: Part 1 Add the interestmethod to your BankAccount Class 2. Add an accountwithyour name 3. Call interest for Harry and pass 5% or .05 4. Call the interestmethod for your account and pass the parameter as .08 5. Revise VISIO drawingaccordingly
Chapter 8, pp 304-307 • pre & post conditions • Section 8.5
Documentation Comments • Documentation included in form of comments • Prior to a class • Prior to a method • Begins with “/**” and ends with “*/” • Internal Method comments discouraged
Documentation • Objective: • Tells other programmers how to use the method! • precondition documentation • postcondition documentation
Documentation • Precondition: describes the state of relevant identifiers • priorto 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.
Documentation • Do NOT: • Repeat code description! • (code is hidden and user/programmer on needs to know what to expect and what must be supplies) • Describe how code works • Do not use attribute names unless meaningful
Preconditions • Precondition • Publish preconditions so the caller won't call methods with bad parameters
Method should let user know if condition is violated. • Caution: Text might imply otherwise
Postconditions • 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 the @return clause
/** • * precondition: Balance is available for an account • * @param 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 19th ANGEL • Lesson Tab
Inheritance • Chapter 10
Inheritance • Inheritance : derive a new class from an existing one • Parent class,or superclass, or base class. • Thechildclass or subclass. • Component hierarchy:
Inheritance (generalization) • is-a relationship between superclassand • a subclass or base class
Inheritance Deposit child Is-a component of parent BankForm
Business ServiceBusiness RetailBusiness KMart Macys Kinkos is-a
Deriving Subclasses JAVA Example 1: class RetailBusinessextends Business Example 2: class CheckingAccount extends BankAccount { <class contents> }
Layout of a Subclass Object SavingsAccount object inherits the balance instance field from BankAccount, and gains one additional instance field: interestRate:
public class BankAccount { private double balance; /** * PostCondition: A bank account with a zero balance. */ public BankAccount() { balance = 0; } /** @paraminitialBalance 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 exists @param 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 exists @param 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 exists. @return the current balance */ public double getBalance() { return balance; }} BankAccount Class Continued
Savings Account package infsy535bankacctwithinheritance; public class SavingsAccount extends BankAccount{ private double interestRate; /** @param 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); } }