Download presentation
Presentation is loading. Please wait.
Published byPamela Oliver Modified over 9 years ago
1
Session 08: Architecture Controllers or Managers Graphical User Interface (GUI) FEN 2013-04-141AK - IT Softwarekonstruktion
2
N-tier (multi-tier) Architecture Web Server Browser Client Internet Dedicated Client Database access layer: All code to access database is here. Makes it possible to change data store. Web server accesses application layer – not the database directly. Easier maintenance: No business logic in the web server (or other clients). Application server: All (almost) business logic is re- used. New client may be added without code duplication. DB Database Server Application Server Database Access Layer Backend Mobile Client Client accessing web services FEN 2013-04-142AK - IT Softwarekonstruktion New Dedicated Client
3
Controller Object So far we have had our business logic and “user interface” in the Main method This obviously not a good design! Normally one will used what is known as a layered ( or n tier) architecture, for instance: –UI –Controller –Model –Database FEN 2013-04-14AK - IT Softwarekonstruktion3 Application For now we focus on the application layer
4
More Banking View Code (Banking4View Code (Banking4) FEN 2013-04-14AK - IT Softwarekonstruktion4
5
Design This design is based on the fact that accounts normally are accessed from Customer. (Hence the complicated and inefficient implementation of GetAllOwners). FEN 2013-04-14AK - IT Softwarekonstruktion5
6
Exercises Exercises 1- 3 on Session08.docx.Session08.docx Extra : 4 – 6 on Session08.docxSession08.docx FEN 2013-04-14AK - IT Softwarekonstruktion6
7
Remember Banking4 ? View Code (Banking4View Code (Banking4) FEN 2011-03-08UCN T&B: IT Technology7
8
Banking4 with GUI (Banking5) View Code (Banking4GUI)Banking4GUI FEN 2011-03-08UCN T&B: IT Technology8
9
How to Create a GUI for an Existing Project Firstly you must have a working project with model and controller, for instance Banking4. First step is to create a new solution in Visual Studio: FEN 2011-03-08UCN T&B: IT Technology9 It must be a “Windows Form Application” Give it a good name. And choose a location for it.
10
How to Create a GUI for an Existing Project FEN 2011-03-08UCN T&B: IT Technology10 New Form in VS Toolbox. Here you find GUI components Properties. Here you can edit components. For instance give the form a good name
11
How to Create a GUI for an Existing Project Right click on the solution. Choose ‘Add’ and ‘Existing Project’. Locate the project you want to add the GUI to: FEN 2011-03-08UCN T&B: IT Technology11 Here is the project file for ‘Banking4’ Choose that.
12
How to Create a GUI for an Existing Project Now ‘Banking4’ shows in the Solution Explorer in Visual Studio: FEN 2011-03-08UCN T&B: IT Technology12
13
How to Create a GUI for an Existing Project Next we want to make the project (‘Banking4’) known to our GUI project: You must use the namespace of Banking4: Right click on the form and choose ‘View Code’ Type this using: FEN 2011-03-08UCN T&B: IT Technology13 But the compiler doesn’t recognises it? Right click on ‘References’ for the GUI project in the Solution Explorer and choose ‘Add Reference’
14
How to Create a GUI for an Existing Project FEN 2011-03-08UCN T&B: IT Technology14 Choose the project tab. Choose the project you want – Banking4...and ‘OK’ Now the compiler recognises ‘Banking4’ namespace and we are ready.
15
Using the Existing Project Right click on the form, choose ‘View Code’, and now we can write code, for instance get an instance of the controller: namespace Bank4WithGUI { public partial class Form1 : Form { private BankCtr myBank = BankCtr.GetInstance(); public Form1() { InitializeComponent(); } FEN 2011-03-08UCN T&B: IT Technology15 Now myBank can be used in the form, and we are able to communicate with the Banking4 application.
16
Adding Components and Controls to the Form Drag- and-drop. FEN 2011-03-08UCN T&B: IT Technology16 Label ToolStrip TextBox Button You may change the properties of components
17
Adding Code Test data is added by the constructor. New method added by me. FEN 2011-03-08UCN T&B: IT Technology17 //--- public Form1() //Constructor { CreateTestData();//my method InitializeComponent(); } //--- private void CreateTestData() { Customer c = new Customer(1, "Peter Thomsen"); myBank.AddCustomer(c); myBank.AddCustomer(new Customer(2, "Ib Helmer")); BankAccount acc1 = new BankAccount(1, 8, 100); BankAccount acc2 = new BankAccount(2, 0.25, 0); BankAccount acc3 = new BankAccount(3, 5, 1000); c = myBank.GetCustomer(1); c.AddAccount(acc1); c.AddAccount(acc2); c.AddAccount(acc3); c = myBank.GetCustomer(2); c.AddAccount(acc2); }
18
Getting some Action Double click on the Find Customer Button and you get an empty event handler method for the button. This method is executed when the button is clicked. Type in the code for the actions that you want. FEN 2011-03-08UCN T&B: IT Technology18 //--- private void button1_Click(object sender, EventArgs e) { } { string input = this.textBox1.Text; int custNo = Convert.ToInt32(input); //no error handling Customer c = myBank.GetCustomer(custNo); this.textBox2.Text = c.Name; }
19
Getting some Action Components are objects and may used like any other objects. FEN 2011-03-08UCN T&B: IT Technology19 private void button1_Click(object sender, EventArgs e) { string input = this.textBox1.Text; int custNo = Convert.ToInt32(input); //no error handling Customer c = myBank.GetCustomer(custNo); this.textBox2.Text = c.Name; } Use ‘this’ and the IntelliSense to find variable names of components and properties of components.
20
Error Handling - Exceptions If, what is entered here, not is a valid and existing customer number; some exception (NumberFormat or NullPointer) will make the program crash. FEN 2011-03-08UCN T&B: IT Technology20 private void button1_Click(object sender, EventArgs e) { string input = this.textBox1.Text; int custNo = Convert.ToInt32(input); //no error handling Customer c = myBank.GetCustomer(custNo); this.textBox2.Text = c.Name; }
21
Error Handling - Exceptions We want to catch and handle that exception. That is done by enclosing the code in a try-block. After that we have a catch-block where we handle the exception. FEN 2011-03-08UCN T&B: IT Technology21 private void button1_Click(object sender, EventArgs e) { string inString = textBox1.Text; try { int custNo = Convert.ToInt32(inString); c = bankCtr.GetCustomer(custNo); textBox2.Text = c.Name; } catch (Exception excep) { MessageBox.Show("Customer number must be an integer"); } Investigate Banking4GUIBanking4GUI
22
Exercises Exercises 7 on Session08.docx.Session08.docx Extra : 8 on Session08.docxSession08.docx FEN 2013-04-14AK - IT Softwarekonstruktion22
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.