using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ClassesExample
{
class Mileage
{
//class variables or fields
//fields should be private
private int beginMileage;
private int endMileage;
private double pricePerGallon;
private double gallons;
//constructors are ways of constructing
//the class, they set the initial values
//a constructor always has the same name
//as the the class and no return type
//A class can have several "overloaded" constructors
//only one is used per instance of the class
//the user chooses which constructor he or she
//wants to use by the signature (what parameters it takes)
//this is a default constructor. It has no arguments
//and sets all the properties to their minumum value;
//If you write no constructor at all this is what you get
//if you do write a constructor it is up to you to
//provide the initial values
public Mileage()
{
PricePerGallon = 0;
BeginMileage = 0;
EndMileage = 0;
Gallons = 0;
}
//this is an overloaded constructor that takes three
//values. A user could choose to do this rather than
//set the values using the properties
public Mileage(int begin, int end, double gal)
{
BeginMileage = begin;
EndMileage = end;
Gallons = gal;
PricePerGallon = 0;
}
//this constructor takes four values
public Mileage(int begin, int end, double gal, double price)
{
BeginMileage = begin;
EndMileage = end;
Gallons = gal;
PricePerGallon = price;
}
//public properties are ways
//to expose the fields in a
//controlled way
//you can do some validation
//and testing in a property
public double PricePerGallon
{
get { return pricePerGallon; }
set { pricePerGallon = value; }
}
public double Gallons
{
get { return gallons; }
set { gallons = value; }
}
public int BeginMileage
{
get { return beginMileage; }
set { beginMileage = value; }
}
public int EndMileage
{
get { return endMileage; }
set { endMileage = value; }
}
//a class can contain both private (internal)
//methods and public methods
private int TotalMiles()
{
return EndMileage - BeginMileage;
}
//public method accessible from other
//classes
public double CalculateGasMileage()
{
int total = TotalMiles();
double milesPerGallon = total / Gallons;
return milesPerGallon;
}
//this is an overloaded method. It has the same
//name but a different signature than the previous method
//again it gives a user of the class another option
//of how to use the class and call the method
public double CalculateGasMileage(int bMiles, int eMiles, double gals)
{
BeginMileage = bMiles;
EndMileage = eMiles;
Gallons = gals;
int total = TotalMiles();
double milesPerGallon = total / Gallons;
return milesPerGallon;
}
//this is "overriding" the ToString method
//which every class inherits from Object
//the parent of all classes in .NET
//the combination of overloading and overwriting is
//what constitutes the object oriented principle of
//polymorphism--the ability of a class
//to behave differently in different environments
public override string ToString()
{
double mpg = CalculateGasMileage();
return "Your gas mileage is" + mpg.ToString("##.##");
}
}
}
Monday, October 28, 2013
Evening Mileage class Revised with comments
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment