Download presentation
Published byEgbert Bradley Modified over 9 years ago
1
Session 04: C# OOP 2 OOP in C#: Object-Oriented Design.
Realisation of Object Associations: 1-1, 1-n, n-m. UML Class Diagram. More about Object Interaction. Collections of Objects FEN AK IT: Softwarekonstruktion
2
AK IT: Softwarekonstruktion
The Anatomy of a Class Classes are usually written by this pattern: class ClassName { declaration of attributes constructors properties methods } FEN AK IT: Softwarekonstruktion
3
The Class BankAccount - attributes and constructor
namespace Banking { public class BankAccount private double balance; private int accNo; private int interestRate; public BankAccount(int no, int ir) balance = 0; accNo = no; intrestRate = ir; } FEN AK IT: Softwarekonstruktion
4
AK IT: Softwarekonstruktion
Methods public bool Withdraw(double amount) public void Deposite(double amout) public void GiveInterest() FEN AK IT: Softwarekonstruktion
5
AK IT: Softwarekonstruktion
Properties public int InterestRate { get{return interestRate;} set{if( value>=0) interestRate = value;} } FEN AK IT: Softwarekonstruktion
6
AK IT: Softwarekonstruktion
Object Interaction Objects may be connected in different ways: Association (“know-of-relation”). One object uses another. Aggregation (“part-of-relation”). One object is a part of another. The distinction is not always clear . Means aggregation FEN AK IT: Softwarekonstruktion
7
Cardinality or Multiplicity
Tells how many other objects an object may be associated with: One customer may have one account, an account must belong to a customer. One customer may have many accounts, an account must belong to one customer. A customer may one or more accounts, an account may belong to one or more customers. Goes for aggregation as well. FEN AK IT: Softwarekonstruktion
8
AK IT: Softwarekonstruktion
Object Interaction: 1 - 1 The Banking example shows object interaction: The classes are connected – in UML: FEN AK IT: Softwarekonstruktion
9
In the Code The association is implemented by an object reference (attribute). public class Customer{ //… private BankAccount account; account= new BankAccount(no, ir, bal); Customer is responsible for creating BankAccount objects. FEN AK IT: Softwarekonstruktion
10
In the Code public class Program{ //… Customer c = new Customer(1, "Peter Thomsen"); Console.WriteLine("Customer: "+ c.Name +" has DKK “ + c.Account.Balance + " in the bank"); Methods in the other class is called using the reference. FEN AK IT: Softwarekonstruktion
11
AK IT: Softwarekonstruktion
Forest Exercise Solution? FEN AK IT: Softwarekonstruktion
12
AK IT: Softwarekonstruktion
Implementing 1 - n One customer may have many accounts, an account must belong to one customer. Possible solution: A collection of BankAccounts in Customer (accounts) FEN AK IT: Softwarekonstruktion
13
AK IT: Softwarekonstruktion
In the Code public class Customer{ //… private List<BankAccount> accounts; public Customer(int cNo, string n){ accounts = new List<BankAccount>(); } public void AddAccount(BankAccount acc){ accounts.Add(acc); View Source FEN AK IT: Softwarekonstruktion
14
Pair Programming (an eXtreme Programming practice)
A well known and widely used technique: Two programmers – one workstation Programmer one is at the keyboard and have focus on the details that are being typed. Programmer two supervises programmer one’s work and has the broader perspective and keeps focus on structure and what’s going to happen next. After a period (10 – 15 min.) programmer one and two swop roles. FEN AK IT: Softwarekonstruktion
15
AK IT: Softwarekonstruktion
Exercise Do the Forest exercise (1 – 3) on Session04.docx. Use pair programming. FEN AK IT: Softwarekonstruktion
16
AK IT: Softwarekonstruktion
Implementing n - m A customer may have one or more accounts, an account may belong to one or more customers. Possible solution: A collection of BankAccounts in Customer (accounts) and a collection of Customers (owners) in BankAccount. FEN AK IT: Softwarekonstruktion
17
AK IT: Softwarekonstruktion
In the Code public class BankAccount{ //… private List<Customer> owners; public BankAccount(int no, double ir, double bal){ owners = new List<Customer>(); } public void AddOwner(Customer c) { owners.Add(c); View Source FEN AK IT: Softwarekonstruktion
18
AK IT: Softwarekonstruktion
Exercise Do part 4 and 5 (Banking) of the exercises on Session04.docx Use pair programming. FEN AK IT: Softwarekonstruktion
19
Implementing Associations Design Choices
Several possibilities for the different cardinalities. The choice mostly depends on business logic (use cases) FEN AK IT: Softwarekonstruktion
20
AK IT: Softwarekonstruktion
1 – 1: One of the objects must have a reference to the other. But which one? Depends of business logic: Is access typically from Customer or from BankAccount? In Banking1 FEN AK IT: Softwarekonstruktion
21
AK IT: Softwarekonstruktion
Again – it depends on business logic: A collection of references on the 1-side? A single reference on the n-side? In Banking2 FEN AK IT: Softwarekonstruktion
22
AK IT: Softwarekonstruktion
n - m (*..*) Here we have no choice: There must be a collection in at least one of the classes: In Banking3 But this is often a problematic solution: Complicated to maintain. Lots of coding is required for doing updates, inserts and deletes. FEN AK IT: Softwarekonstruktion
23
AK IT: Softwarekonstruktion
n - m (*..*) But this is often a problematic solution: Complicated to maintain. Lots of coding is required for doing updates, inserts and deletes. Often it is a good design to introduce a connection object: And replace the n – m association by two 1 – n associations. The designs for 1 – n may then be applied. If there are any information on the association, this is necessary: FEN AK IT: Softwarekonstruktion
24
Example: Project Management
Lets look at an other example: An employee may work on several projects. A project may have several employees working on it. We need to record the number of hours a given employee has spent on a given project: Let’s dive into the code FEN AK IT: Softwarekonstruktion
25
AK IT: Softwarekonstruktion
Exercises Do part 6 (EmpProjV1) on Session04.docx Do part 7 (Banking3) on Exercises03.pdf. Use pair programming. FEN AK IT: Softwarekonstruktion
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.