This lab serves multiple goals:
One use case for static classes is creating utility classes (or “helper
classes”) that contain related and frequently-used methods Using a
static class makes those methods easily callable anywhere in the
program. Some examples of static classes in C## are the Math
and
Console
classes.
Pay attention to how these classes are used:
A Console
object is never instantiated before use.
The WriteLine
method is called referring to the name of the class
(not an object identifier):
Console.WriteLine("calling a static method");
Question:
Using your IDE, check what happens if you do the following:
Console test = new Console();
In your IDE create a new project. Then add a new class file called Calculator.cs
In Calculator.cs:
static
class and name it Calculator
.public
methods to the Calculator
class. Each method takes
2 arguments x
and y
of type double
:
Add
method that returns the result of x + y
.Subtract
method that returns the result of x - y
.Multiply
method that returns the result of x * y
.Divide
method that returns the result of x / y
.Modulo
method that returns the result of x % y
.After implementing Calculator
,
Open the file that contains the program’s Main
method
Paste the following code inside the Main
method:
double x = 10d, y = 2d;
Console.WriteLine($"{x} + {y} = {Calculator.Add(x, y)}");
Console.WriteLine($"{x} - {y} = {Calculator.Subtract(x, y)}");
Console.WriteLine($"{x} * {y} = {Calculator.Multiply(x, y)}");
Console.WriteLine($"{x} / {y} = {Calculator.Divide(x, y)}");
Console.WriteLine($"{x} % {y} = {Calculator.Modulo(x, y)}");
Again, notice how
Calculator
is created before use, andCalculator
method is called referring to the name of the
class.Execute the program
Calculator
class matches the
instructions, you will see meaningful output after executing the
program.A non-static class can contain both static and non-static class members.
Download, extract, and study this project implementation, but do not execute it. After reading through the implementation, answer the questions below.
How many non-static attributes does the Student
class have?
How many static attributes does the Student
class have?
How many non-static methods does the Student
class have?
How many static methods does the Student
class have?
What is the output of each of the following lines in “Program.cs”:
Console.WriteLine(alice);
Student.DisplayStudentCount(); // first time
Console.WriteLine(bob);
Student.DisplayStudentCount(); // second time
If the studentCount
attribute was not static
, what would be
the output of:
Student.DisplayStudentCount(); // first time
Student.DisplayStudentCount(); // second time
When a class contains both static and non-static members, is it
possible to refer to non-static members inside a static method? For
example, if we try to refer to the name
attribute inside
DisplayStudentCount
, will it work? Why or why not?
Check your answers by creating a matching program in your IDE and executing it.
To check the last question, in Student.cs, uncomment the following line and verify its behavior matches your answer:
// Console.WriteLine(name);