Download Adding a Class to a Project, Visibility, Instance Variables | CSE 1301 and more Study Guides, Projects, Research Computer Science in PDF only on Docsity! CSE 1301 Lecture 4A Writing Classes Figures from Lewis, “C# Software Solutions”, Addison Wesley Briana B. Morrison CSE 1301 4A-2 Topics • Adding a Class to a Project • Defining a Class – Attributes – Methods • Using a Class • Visibility • Instance Variables • Properties CSE 1301 4A-3 Multiple Classes in a Project • You’ve seen projects with many classes – XNA projects can (and often do) have multiple classes… one for each game element • Can add classes to our project – Keep them all in one file (~bad choice) – One class per file (better choice) CSE 1301 4A-4 CSE 1301 4A-5 Adding to a Project Right-click project Select Add | Add New Item… CSE 1301 4A-6 CSE 1301 4A-7 Why User-Defined Classes? Primitive data types (int, double, char, .. ) are great … … but in the real world, we deal with more complex objects: products, Web sites, flight records, employees, students, .. Object-oriented programming enables us to manipulate real-world objects. CSE 1301 4A-8 User-Defined Classes • Combine data and the methods that operate on the data • Advantages: – Class is responsible for the validity of the data. – Implementation details can be hidden. – Class can be reused. • Client of a class – A program that instantiates objects and calls methods of the class CSE 1301 4A-9 Classes • A class can contain data declarations and method declarations int size, weight; char category; Data declarations Method declarations CSE 1301 4A-10 Important Terminology • Fields – instance variables: data for each object – class data: static data that all objects share • Members – fields and methods • Access Modifier – determines access rights for the class and its members – defines where the class and its members can be used CSE 1301 4A-11 Using the Class • Before we define the Die class, let’s use it • Remember that OOP allows us to ignore the “guts” and just presume it works • There are 3+ people involved – The writer of the class (knows what the “guts” are) – The user of the class, writing the main program (knows his code, but doesn’t know the class “guts”) – The user of the program – sees the interface, doesn’t see program code at all CSE 1301 4A-12 CSE 1301 4A-25 Object Method & Attribute Visibility BMW_Z4 myCar; myCar = new BMW_Z4(); myCar.LicensePlate = "BMR4ME"; myCar.ModelYear = 2004; myCar.Drive(); myCar.OpenTop(); myCar.Drive(); Illegal b/c private CSE 1301 4A-26 Interacting with Objects • Keep private/public visibility as needed CSE 1301 4A-27 Visibility CSE 1301 4A-28 Defining Instance Variables Syntax: accessModifier dataType identifierList; dataType can be primitive date type or a class type identifierList can contain: – one or more variable names of the same data type – multiple variable names separated by commas – initial values • Optionally, instance variables can be declared as const CSE 1301 4A-29 Examples of Instance Variable Definitions private string name = ""; private const int PERFECT_SCORE = 100, PASSING_SCORE = 60; private int startX, startY, width, height; CSE 1301 4A-30 The Auto Class class Auto { private string model; private int milesDriven; private double gallonsOfGas; } CSE 1301 4A-31 Properties • Combines field/attribute with method • Standard: – Make attributes private – Lower-case first letter of attribute – Make properties public – Upper-case first letter of properties – Define “get” and “set” for each property (selectively) CSE 1301 4A-32 class BMW_Z4 { private int modelYear; private string licensePlate; private bool topUp; public int ModelYear { get { return modelYear; } set { if (value >= 2003) modelYear = value; } } public string LicensePlate { get { return licensePlate; } set { if (value.Length() == 6) licensePlate = value; } } ... } Properties Example CSE 1301 4A-33 Auto Properties • Now how would you write the properties for the Auto class? class Auto { private string model; private int milesDriven; private double gallonsOfGas; }