420 likes | 574 Views
CIS162AD - C#. Methods, Menus, and Dialog Boxes 05_methods_menus.ppt. Top-Down Design Built-in Methods Black Box Analogy Programmer-Defined Methods Method’s Signature & Overloading Pass-by-value Arguments Menu Designer Context Menus (right-click) Common Dialog Boxes.
E N D
CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt
Top-Down Design Built-in Methods Black Box Analogy Programmer-Defined Methods Method’s Signature & Overloading Pass-by-value Arguments Menu Designer Context Menus (right-click) Common Dialog Boxes Overview of Topics
A design method where the major task to be accomplished is divided into subtasks. Divide-and-Conquer Stepwise Refinement The goal is to write a modular program that is easier to read and maintain. Top-Down Design
A design method where the major task to be accomplished is divided into subtasks. Major Task: clean house Subtasks: dust, vacuum, sweep, mop Programming example. Major Task: CS5 Sales Calculator Subtasks: input qty, pricecalculate sales tax, shipping, subtotal, etcdisplay total bill Top-Down Design - Analogy
Subtasks • Each subtask should perform a single well-defined task. • Each subtask may produce some result. • Treat them as small programs. Input -> Process -> Output • These subtasks can be used at different times in one program or placed in a library and used by many different programs. • The int.Parse method is a complicated task that converts strings to numbres, and is used by many different programs.
Top-Down Design Implementation • Top-Down design is implemented using methods. • A method is a collection of statements that are grouped together to perform a specific operation. • Methods have inputs called arguments. • Methods can be defined to return no value, but if it does return a value, only one value can be returned through the return statement. • Methods can “return” more than one value through call-by-reference arguments (more on this later).
Programmer-Defined Methods • Before coding some programmer-defined methods, let’s look at some built-in methods a little closer. • It will help understand what we are trying to develop if we look at how methods are used.
Built-in Methods • They are like small programs. • They have their own input – process – output. • They can have one or more inputs. • But methods can only return one output. • As programmers, we don’t get to see the code (process) of built-in methods. • The process is like a black box…
Black Box Analogy • Many methods are designed as black boxes. • This means that as programmers we should not be concerned how the methods performs its processing. • We only need to know the inputs, outputs, and what it does. • We know what is required to use it, but we don’t know how it does its calculations. • Develop your own methods with the Black Box Analogy in mind.
Convert Text to Integer – int.Parse • Convert Text to Integer method is named int.Parse. • The documentation for int.Parse states the value that will be returned, method name, and the type and number of arguments. intNumber = int.Parse(String) returnedValue = MethodName (arguments) • Int.Parse takes one argument that is a String. • The method is called using the following syntax:If txtQuantity.Text contains “3” then the function call:intNumber = int.Parse(txtQuantity.Text)would return a value of 3 into intNumber.
Method Call • We issue a method call when we use it. • Processing control is passed to the method until it completes its task and returns control back to the calling method. • Most methods return a value back,but only one value can be returnedthrough the return statement.
Round Method • Methods can only return one value, but may have more than one argument.decWholeNum = decimal.Round(decNum, 0); • The value returned is a whole number with no digits after the decimal point.
Method’s Signature & Overloading • Method overloading occurs when more than one method with the same name is defined, but differ in the parameter list.MessageBox.Show(TextMessage);MessageBox.Show(TextMessage, TitleBar);MessageBox.Show(TextMessage, TitleBar, ButtonType);MessageBox.Show(TextMessage, TitleBar, ButtonsType, Icon); • Each method’s signature is unique and consists of: • Method name • The number, data types, and order of its parameters • Parameters can also be modified with the keywords ref and out (These keywords are covered in next powerpoint presentation) • The signature does NOT include the data type of the returned valueand the names used to identify the parameters.
Small Programs • Think of each method as a small program with input, process, and output steps. Output < Process < Input returnedValue = MethodName (arguments) intNumber = int.Parse(String)
Programmer-Defined Methods • The single value that a method returns can be a string or numeric. • Two Components 1. Method Definition 2. Method Call
Function Definition - Syntax • Syntax:private dataType MethodName(arguments) { statement(s) return expression;} • dataType is where we specify what type of value is being returned, string or numeric. • Use the return statement to return the value. • Variables that will be used to store the values sent into the method are listed in parentheses as arguments.
Method Definition - Example private decimal calcExtendedPrice(int intQty, decimal decPrice){ decimal decExtendedPrice; decExtendedPrice = intQty * decPrice; return decExtendedPrice;} • decimal is the data type of the value being returned. • calcExtendedPrice is the Method Name. • intQty and decPrice are the arguments passed to method. • The signature of this method is calcExtendedPrice(int, decimal)
Return Statement • Return statement returns the value back to the variable listed to the left of the equal sign on the call statement. • Return statement returns processing control back to the calling procedure. • Only one value can be returned. • Variable data type of returned value must match the return type specified in heading.
Multiple Returns • A method may be defined with multiple Return statements. • The first Return statement executed returns the value and returns processing control back to the calling procedure. private decimal calcExtendedPrice(int intQty, decimal decPrice{ if (intQty < 26) return intQty * decPrice; else return intQty * (decPrice * .95); //5% discount}
Single Return Preferred • Although methods can be coded using multiple Return statements, one Return statement is preferred. • Having multiple Returns in complex procedure can be difficult to maintain and debug. private decimal calcExtendedPrice(int intQty, decimal decPrice ){ decimal decExtendedPrice; if (intQty < 26) decExtendedPrice = intQty * decPrice; else decExtendedPrice = intQty * (decPrice * .95); //5% discount return decExtendedPrice; }
A Method without a Return • If a method that is supposed to return a value does not contain a return statement, then the compiler will generate a syntax error. private decimal calcExtendedPrice(int intQty, decimal decPrice ){ decimal decExtendedPrice; if (intQty < 26) decExtendedPrice = intQty * decPrice; else decExtendedPrice = intQty * (decPrice * .95); //return decExtendedPrice; //commented out – syntax error }
Method Call • The method call is issued when the method is used in another method.private void btnCalculate_Click(…){ intQty = int.Parse(txtQuantity.Text); decPrice = decimal.Parse(txtPrice.Text); decExtendedPrice = calcExtendedPrice(intQty, decPrice);}
Local Variables • Variables are local to the method in which they are defined. • Variables defined in a particular method are assigned their own memory and can only be referenced in that method. • Variables defined in calcExtendedPrice( ) are assigned their own memory and can only be referenced in calcExtendedPrice( ). • Different methods cannot see or reference each others variables. • They have separate memory allocations even though the variable names may be the same.
Passing Arguments private void btnCalculate_Click(…){ int intQty; decimal decPrice, decExtendedPrice; intQty = int.Parse(txtQuantity.Text); decPrice = decimal.Parse(txtPrice.Text); decExtendedPrice = calcExtendedPrice(intQty, decPrice);} private decimalcalcExtendedPrice(int intQty, decimal decPrice){ decimal decExtended; decExtended = intQty * decPrice; return decExtended;}
decExtendedPrice = calcExtendedPrice(intQty, decPrice); Pass-by-Value - Values in variables of btnCalculate are sent to variables of calcExtendedPrice.
Methods Use Local Variables private void btnCalculate_Click(…){ int intQty; decimal decPrice, decExtendedPrice; intQty = int.Parse(txtQuantity.Text); decPrice = decimal.Parse(txtPrice.Text); decExtendedPrice = calcExtendedPrice(intQty, decPrice);} private decimalcalcExtendedPrice(int intQty, decimal decPrice){ decimal decExtended;decExtended = intQty * decPrice; return decExtended;}
Returning Method Values private void btnCalculate_Click(…){ int intQty; decimal decPrice, decExtendedPrice; intQty = int.Parse(txtQuantity.Text); decPrice = decimal.Parse(txtPrice.Text);decExtendedPrice = calcExtendedPrice(intQty, decPrice);} private decimalcalcExtendedPrice(int intQty, decimal decPrice){ decimal decExtended; decExtended = intQty * decPrice;return decExtended;}
decExtendedPrice = calcExtendedPrice(intQty, decPrice) Return statements sends the value to variable on the left side of the equal sign on the method call statement.
Menu Designer • Plan menu options / paths. • Add MenuStrip control to component tray.Just like the ToolTip. • Enter Text for menu item in box labeled Type Here. • Use ampersands to define control keys. • Name menu items using menu path and mnu prefix. • Need to know name so we can tell which menu item was selected in the code.private void mnuFileExit_Click(object sender, System.EventArgs e){ this.Close();}
Context Menus • Context menus are shortcut menus that pop up with a right-click. • Add a ContextMenuStrip control to the component tray. • Use the Menu Designer to add items. • More than one context menu can be added. • In order to make the context menu available to users, it must be assigned to the form or control by using the ContextMenuStrip property. • See the images on the next two slides…
Common Dialog Boxes • Common dialog boxes available: • FontDialog • ColorDialog • OpenFileDialog • SaveFileDialog • PrintDialog • PrintPreviewDialog
Common Dialog Boxes • The Common Dialog Box controls can save programmers the time and trouble of designing custom dialog boxes for common purposes. • Add a common dialog box control to the component tray. • The default Name of the Dialog maybe used, unless more than one is being used in the program.. colorDialog1, fontDialog, etc. • You won’t see anything in design time, because the dialog box is displayed at run-time with code. • Use the ShowDialog method to display a dialog box. fontDialog1.ShowDialog( ); colorDialog1.ShowDialog( );
Using Selected Options • Dialog Boxes are objects themselves with properties. • The values selected by users in a font or color dialog box are stored in the dialog box’s properties. • The values in the dialog boxes selected by usersneed to be applied to controls on the form. lblGrandTotal.Font = fontDialog1.Font; lblGrandTotalForeColor = colorDialog1.Color; Note: property on Labels and Textboxes is ForeColor. • Before showing a dialog box, you should assign to it the current value selected just incase users click on Cancel. fontDialog1.Font = lblGrandTotal.Font;
Method Example private void mnuEditFont_Click(object sender, System.EventArgs e) { //Initialize the font in the dialog box to the current font fontDialog1.Font = lblGrandTotal.Font; //Display dialog box so user can pick a font fontDialog1.ShowDialog(); //Apply the font chosen to the Totals section lblGrandTotal.Font = fontDialog1.Font; lblNumberOfOrders.Font = fontDialog1.Font; lblAverageOrder.Font = fontDialog1.Font; }
Summary • Top-Down Design • Built-in Methods • Black Box Analogy • Programmer-Defined Methods • Method’s Signature & Overloading • Menu Designer • Context Menus • Common Dialog Boxes