advanced objects (dependencies and documentation)
DESCRIPTION
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. - PowerPoint PPT PresentationTRANSCRIPT
Advanced Objects(Dependencies and Documentation)
Java Class Concept
Encapsulation◦ Blackbox concept
Data and method(s)Hidden details
Interface Effect(s)
methods called
class
Relationship Symbol Line Style
Arrow Tip
Inheritance-is-a
Solid Triangle
Interface Implementation
Dotted Triangle
Aggregation-has-a
Solid Diamond
Dependency
Dotted Open
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..*
has-a relationship
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(2000.00); harrysChecking.withdraw(500.00); System.out.println(harrysChecking.getBalance()); }}
Review BankAccount
Lab: Part 1
1. Add the interest method to your BankAccount Class2. Add an account with your name3. Call interest for Harry and pass 5% or .054. Call the interest method for your account and pass the parameter as .085. Revise VISIO drawing accordingly
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
• 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 works3) 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 the @return clause
Postconditions
/** * 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
Chapter 10
Inheritance
Inheritance : derive a new class from an existing one
Parent class, or superclass, or base class.
Thechild class or subclass.
Component hierarchy:
Inheritance (generalization)
is-a relationship between superclass and a subclass or base class
Inheritance
Deposit
BankForm parent
Is-a component of
child
Business
KMart Macys
ServiceBusiness
Kinkos
RetailBusiness
is-a
Deriving SubclassesJAVA Example 1: class RetailBusiness extends Business
Example 2:class CheckingAccount extends BankAccount{
<class contents>}
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; } /** @param 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 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
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); } }
Savings Account