Presentation is loading. Please wait.

Presentation is loading. Please wait.

Session 04: C# OOP 2 OOP in C#: Object-Oriented Design.

Similar presentations


Presentation on theme: "Session 04: C# OOP 2 OOP in C#: Object-Oriented Design."— Presentation transcript:

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


Download ppt "Session 04: C# OOP 2 OOP in C#: Object-Oriented Design."

Similar presentations


Ads by Google