how to createhow to create and use classes - web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf ·...

52
Chapter 12 Chapter 12 How to create How to create and use classes Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 1

Upload: doandang

Post on 04-May-2018

225 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Chapter 12Chapter 12

How to createHow to create and use classes

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 1

Page 2: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Objectives jApplied 1. Given the specifications for an application that uses classes with any

f h b d i hi h d l h li iof the members presented in this chapter, develop the application and its classes.

2. Use class diagrams, the Solution Explorer, and the Class Details i d t i d l t d t t th b f th l iwindow to review, delete, and start the members of the classes in a

solution.

Knowledge 1. List and describe the three layers of a three-layered application. 2. Describe these members of a class: constructor, method, field, and

property. p p y3. Describe the concept of encapsulation. 4. Explain how instantiation works.

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 2

Page 3: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Objectives (cont.)j ( )5. Describe the main advantage of using object initializers. 6. Explain how auto-implemented properties work. 7 D ib th t f l di th d7. Describe the concept of overloading a method.8. Explain what a static member is. 9. Describe the basic procedure for using the Generate From Usage

f d bfeature to generate code stubs.10. Describe the difference between a class and a structure.

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 3

Page 4: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The architecture of a three-layered applicationy pp

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 4

Page 5: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The members of a Product class Properties Description Code A string that contains a code that

uniquely identifies each productuniquely identifies each product. Description A string that contains a

description of the product. i A d i l th t t i thPrice A decimal that contains the

product’s price. Method Description GetDisplayText(sep) Returns a string that contains the

code, description, and price in a displayable format. The sep parameter is a string that’s usedparameter is a string that s used to separate the elements. It’s typically set to a tab or new line character.

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 5

Page 6: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The members of a Product class (cont.)( )Constructors Description () Creates a Product object with

default valuesdefault values.(code, description, price) Creates a Product object using

the specified code, description, and price valuesand price values.

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 6

Page 7: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Types of class membersypClass member Description Property Represents a data value associated with an

object instanceobject instance.Method An operation that can be performed by an

object. Constructor A special type of method that’s executed whenConstructor A special type of method that’s executed when

an object is instantiated. Delegate A special type of object that’s used to wire an

event to a methodevent to a method.Event A signal that notifies other objects that

something noteworthy has occurred. Fi ld A i bl th t’ d l d t th l l lField A variable that’s declared at the class level.Constant A constant.

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 7

Page 8: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Types of class members (cont.) yp ( )Class member Description Indexer A special type of property that allows

individual items within the class to beindividual items within the class to be accessed by index values. Used for classes that represent collections of objects.

Operator A special type of method that’s performed forOperator A special type of method that s performed for a C# operator such as + or ==.

Class A class that’s defined within the class.

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 8

Page 9: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Class and object conceptsj p• An object is a self-contained unit that has properties, methods,

and other members. A class contains the code that defines the members of an object.j

• An object is an instance of a class, and the process of creating an object is called instantiation.

• Encapsulation is one of the fundamental concepts of object• Encapsulation is one of the fundamental concepts of object-oriented programming. It lets you control the data and operations within a class that are exposed to other classes.

• The data of a class is typically encapsulated within a class using• The data of a class is typically encapsulated within a class using data hiding. In addition, the code that performs operations within the class is encapsulated so it can be changed without changing the way other classes use it.y

• Although a class can have many different types of members, most of the classes you create will have just properties, methods, and constructors.

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 9

Page 10: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The Product class: Fields and constructorsusing System; namespace ProductMaint {{ public class Product { private string code; private string description; private decimal price; public Product(){}

bli d ( i d i d i i public Product(string code, string description, decimal price) { this.Code = code;

this Description = description; this.Description = description; this.Price = price; }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 10

Page 11: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The Product class: The Code propertyp p y public string Code { get

{ { return code; } set { code = value; } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 11

Page 12: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The Product class: The Description propertyp p p y public string Description { get

{ { return description; } set { description = value; } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 12

Page 13: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The Product class: The Price propertyp p y public decimal Price { get

{ { return price; } set { price = value; } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 13

Page 14: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The Product class: The GetDisplayText methodp y public string GetDisplayText(string sep) { return code + sep + price.ToString("c") +

sep + description; sep + description; } } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 14

Page 15: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Two Product objects that have been instantiated jfrom the Product class product1 Code=CS12

product2 Code=VB12Code CS12

Description=Murach’s C# 2012 Price=54.50

Code VB12Description=Murach’s Visual Basic 2012Price=54.50

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 15

Page 16: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Code that creates these two object instancesjProduct product1, product2; product1 = new Product("CS12", "Murach's C# 2012", 54.50m); product2 = new Product("VB12", "Murach's Visual Basic 2012", 54.50m);

Another way to create the object instances product1 = new Product { Code = "CS12", Description = "Murach's C# 2012", Price = 54.50m }; product2 = new Product { Code = "VB12", Description = "Murach's Visual Basic 2012", Price = 54.50m };

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 16

Page 17: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The dialog box for adding a class g g

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 17

Page 18: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The starting code for the new classgusing System; using System.Collections.Generic; using System.Linq; using System.Text;using System.Text;using System.Threading.Tasks; namespace ProductMaintenance { class Product { } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 18

Page 19: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Examples of field declarationspprivate int quantity; // A private field. public decimal Price; // A public field. public readonly int Limit = 90; // A public read-only field.

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 19

Page 20: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

A Product class that uses public fieldsppublic class Product { // Public fields public string Code;

bli i i i public string Description; public decimal Price; public Product() { } public Product(string code, string description, decimal price) { this.Code = code; this.Description = description; this.Price = price; } public string GetDisplayText(string sep) p g p y ( g p) { return Code + sep + Price.ToString("c") + sep + Description; } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 20

Page 21: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The syntax for coding a public propertyy g p p p ypublic type PropertyName { [get { get accessor code }] [set { set accessor code }] }}

A read/write property public string Code { get { return code; } set { code = value; } }

A read-only property public decimal DiscountAmount {

get get { discountAmount = subtotal * discountPercent; return discountAmount; } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 21

}

Page 22: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

An auto-implemented propertyp p p ypublic string Code { get; set; }

A statement that sets a property value product.Code = txtProductCode.Text;

A statement that gets a property value string code = product.Code;

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 22

Page 23: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The syntax for coding a public methody g ppublic returnType MethodName([parameterList]) { statements }}

A method that accepts parameters public string GetDisplayText(string sep) {{ return code + sep + price.ToString("c") + sep + description; }

An overloaded version of the method public string GetDisplayText() { return code + ", " + price.ToString("c") + ", " + description; }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 23

Page 24: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Statements that call the GetDisplayText methodp ylblProduct.Text = product.GetDisplayText("\t");

lblProduct.Text = product.GetDisplayText();

H th I t lliS f t li tHow the IntelliSense feature lists overloaded methods

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 24

Page 25: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

A constructor with no parameters ppublic Product() { }

A constructor with three parameters public Product(string code, string description, decimal price) {{ this.Code = code; this.Description = description; this.Price = price; }}

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 25

Page 26: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

A constructor with one parameter ppublic Product(string code) { Product p = ProductDB.GetProduct(code);

this.Code = p.Code; this.Code p.Code; this.Description = p.Description; this.Price = p.Price; }

Statements that call the Product constructorsProduct product1 = new Product();

Product product2 = new Product("CS12", h' C# 2012 54 50 ) "Murach's C# 2012", 54.50m);

Product product3 = new Product(txtCode.Text);

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 26

Page 27: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Default values for instance variablesData type Default value All numeric types zero (0) B l f lBoolean falseChar binary 0 (null) Object null (no value) Date 12:00 a.m. on January 1, 0001

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 27

Page 28: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

A class that contains static memberspublic static class Validator { private static string title = "Entry Error"; public static string Title { get { return title; } set {

i l l title = value; } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 28

Page 29: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

A class that contains static members (cont.)( ) public static bool IsPresent(TextBox textBox) { if (textBox.Text == "")

{ { MessageBox.Show(textBox.Tag + " is a required field.", Title); textBox.Focus(); return false; } return true; }

C d th t t ti bCode that uses static members if ( Validator.IsPresent(txtCode) && Validator.IsPresent(txtDescription) && Validator.IsPresent(txtPrice) ) ( ) ) isValidData = true; else isValidData = false;

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 29

Page 30: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Right-clicking on an undefined name g gto generate a class

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 30

Page 31: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Using a smart tag menu g gto generate a method stub

The generated codegclass Product { internal decimal GetPrice(string p)

{ { throw new NotImplementedException(); } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 31

Page 32: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The Product Maintenance form

The New Product formThe New Product form

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 32

Page 33: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The Tag property settings for the text boxes g p p y gon the New Product form Control Tag property setting t tC d C dtxtCode CodetxtDescription Description txtPrice Price

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 33

Page 34: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The Product classProperty Description Code A string that contains a code that

uniquely identifies the productuniquely identifies the product. Description A string that contains a description of

the product. i A decimal that contains the product’sPrice A decimal that contains the product’s

price. Method Description

R i h i h dGetDisplayText(sep) Returns a string that contains the code, description, and price separated by the sep string.

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 34

Page 35: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The Product class (cont.)( ) Constructor Description () Creates a Product object with default

valuesvalues. (code, description, price) Creates a Product object using the

specified values.

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 35

Page 36: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The ProductDB classMethod Description GetProducts() A static method that returns a List<> of

Product objects from the Products fileProduct objects from the Products file.SaveProducts(list) A static method that writes the products in the

specified List<> of Product objects to the Products fileProducts file.

Note • You don’t need to know how the ProductDB class works. You You don t need to know how the ProductDB class works. You

just need to know about its methods so you can use them in your code.

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 36

Page 37: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The Validator classProperty Description Title A static string that contains the

text that’s displayed in the titletext that s displayed in the title bar of a dialog box that’s displayed for an error message.

Static method Returns a Boolean valueStatic method Returns a Boolean value that indicates whether…

IsPresent(textBox) Data was entered into the text box.box.

IsInt32(textBox) An integer was entered into the text box.

IsDecimal(textBox) A decimal was entered into theIsDecimal(textBox) A decimal was entered into the text box.

IsWithinRange(textBox, min, max) The value entered into the text box is within the specified range

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 37

box is within the specified range.

Page 38: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The code for the Product Maintenance formpublic partial class frmProductMain : Form { public frmProductMain() {

i i li C () InitializeComponent(); } private List<Product> products = null; private void frmProductMain_Load(object sender, System.EventArgs e) { products = ProductDB.GetProducts(); FillProductListBox(); } private void FillProductListBox() { lstProducts.Items.Clear();(); foreach (Product p in products) { lstProducts.Items.Add(p.GetDisplayText("\t")); }

}

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 38

}

Page 39: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The code for the Product Maintenance form (cont.) private void btnAdd_Click(object sender, System.EventArgs e) {

frmNewProduct newProductForm = new frmNewProduct(); frmNewProduct newProductForm new frmNewProduct(); Product product = newProductForm.GetNewProduct(); if (product != null) { products.Add(product);

ProductDB SaveProducts(products); ProductDB.SaveProducts(products); FillProductListBox(); } }

private void btnDelete Click(object sender System EventArgs e) private void btnDelete_Click(object sender, System.EventArgs e) { int i = lstProducts.SelectedIndex; if (i != -1) {

P d t d t d t [i] Product product = products[i]; string message = "Are you sure you want to delete " + product.Description + "?"; DialogResult button = MessageBox.Show(message, "Confirm Delete",

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 39

MessageBoxButtons.YesNo);

Page 40: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The code for the Product Maintenance form (cont.) if (button == DialogResult.Yes) {

products Remove(product); products.Remove(product); ProductDB.SaveProducts(products); FillProductListBox(); } }

} } private void btnExit_Click(object sender, EventArgs e) { this.Close();

} } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 40

Page 41: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The code for the New Product formpublic partial class frmNewProduct : Form { public frmNewProduct() {

i i li C () InitializeComponent(); } private Product product = null; public Product GetNewProduct() { this.ShowDialog(); return product; } private void btnSave_Click(object sender, System.EventArgs e) { if (IsValidData()) { { product = new Product(txtCode.Text, txtDescription.Text, Convert.ToDecimal(txtPrice.Text)); this.Close(); }

}

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 41

}

Page 42: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The code for the New Product form (cont.)( ) private bool IsValidData() { return Validator.IsPresent(txtCode) && Validator.IsPresent(txtDescription) &&

V lid t I P t(t tP i ) Validator.IsPresent(txtPrice) && Validator.IsDecimal(txtPrice); } private void btnCancel_Click(object sender, System.EventArgs e) { this.Close(); } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 42

Page 43: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The code for the Validator class public static class Validator { private static string title = "Entry Error";

bli i i i l public static string Title { get { return title; } set { title = value; } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 43

Page 44: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The code for the Validator class (cont.)( ) public static bool IsPresent(TextBox textBox) { if (textBox.Text == "") {

M B Sh (t tB T " i i d fi ld " MessageBox.Show(textBox.Tag + " is a required field.", Title); textBox.Focus(); return false; } return true; }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 44

Page 45: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The code for the Validator class (cont.)( ) public static bool IsDecimal(TextBox textBox) { decimal number = 0m; if (Decimal.TryParse(textBox.Text, out number))

{ { return true; } else { MessageBox.Show(textBox.Tag + " must be a decimal value.", Title); textBox.Focus(); return false; } } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 45

Page 46: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The Solution Explorer with the members pof the Product class displayed

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 46

Page 47: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

A class diagram that shows two of the classes*g

*Express Edition doesn’t have class diagrams or the Class Details

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 47

p ess d o does ve c ss d g s o e C ss e swindow

Page 48: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

The syntax for creating a structurey gpublic struct StructureName { structure members... }}

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 48

Page 49: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

A Product structurepublic struct Product { private string code; private string description;

i d i l i private decimal price; public Product(string code, string description, decimal price) { this.code = code; this.description = description; this.price = price; } public string Code { get { return code; } set { code = value; } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 49

Page 50: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

A Product structure (cont.)( ) . . public string GetDisplayText(string sep) {

t C d P i T St i (" ") D i ti return Code + sep + Price.ToString("c") + sep + Description; } }

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 50

Page 51: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Code that declares a variable as a structure type ypand assigns values to it

// Create an instance of the Product structure Product p; // Assign values to each instance variable p.Code = "CS12"; p.Description = "Murach's C# 2012"; p Price = 54 50m;p.Price = 54.50m; // Call a method

string msg = p.GetDisplayText("\n");

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 51

Page 52: How to createHow to create and use classes - Web.nmsu.eduenanawa/bcis222/slides/ch12slides.pdf · How to createHow to create and use classes ... The architecture of a three-layyppered

Code that uses the default constructor to initialize the instance variables

Product p = new Product();

C d th t th t t th t tCode that uses the constructor that accepts parameters to initialize the instance variables

Product p = new Product("CS12", "Murach's C# 2012", 54 50 ) 54.50m);

Murach's C# 2012, C12 © 2013, Mike Murach & Associates, Inc. Slide 52