Properties and Encapsulation
Computed Properties
A computed property calculates its value from other object state.
computed property
A computed property returns a value instead of storing one directly.
Computed Properties
ComputedProperties.cs
Replay: real traced execution (multi-file project)
using System;
class Rectangle
{
public int Width { get; set; }
public int Height { get; set; }
public int Area
{
get { return Width * Height; }
}
}
class Program
{
static void Main()
{
int height = 4;
Rectangle rectangle = new Rectangle();
rectangle.Width = 5;
rectangle.Height = height;
Console.WriteLine($"height={height}");
Console.WriteLine($"area={rectangle.Area}");
}
}
using System;
class Rectangle
{
public int Width { get; set; }
public int Height { get; set; }
public int Area
{
get { return Width * Height; }
}
}
class Program
{
static void Main()
{
int height = 2;
Rectangle rectangle = new Rectangle();
rectangle.Width = 5;
rectangle.Height = height;
Console.WriteLine($"height={height}");
Console.WriteLine($"area={rectangle.Area}");
}
}
using System;
class Rectangle
{
public int Width { get; set; }
public int Height { get; set; }
public int Area
{
get { return Width * Height; }
}
}
class Program
{
static void Main()
{
int height = 6;
Rectangle rectangle = new Rectangle();
rectangle.Width = 5;
rectangle.Height = height;
Console.WriteLine($"height={height}");
Console.WriteLine($"area={rectangle.Area}");
}
}
height ← 4, rectangle ← Rectangle, rectangle.Width ← 5, rectangle.Height ← 4
15{16 static void Main()17 {18 int height→ 4 = 4; //@height=2, 619 Rectangle rectangle→ Rectangle = new Rectangle();20 rectangle.Width→ 5 = 5;21 rectangle.Height→ 4 = height4;2223 Console.WriteLine($"height={height4}");24 Console.WriteLine($"area={rectangle.Area}");outputheight=4Console.WriteLine($"area={rectangle.Area}");
23 Console.WriteLine($"height={height}");24 Console.WriteLine($"area={rectangle.Area20}");25}Console.WriteLine($"area={rectangle.Area}");
23 Console.WriteLine($"height={height}");24 Console.WriteLine($"area={rectangle.Area20}");25}outputarea=20
height ← 2, rectangle ← Rectangle, rectangle.Width ← 5, rectangle.Height ← 2
15{16 static void Main()17 {18 int height→ 2 = 2;19 Rectangle rectangle→ Rectangle = new Rectangle();20 rectangle.Width→ 5 = 5;21 rectangle.Height→ 2 = height2;2223 Console.WriteLine($"height={height2}");24 Console.WriteLine($"area={rectangle.Area}");outputheight=2Console.WriteLine($"area={rectangle.Area}");
23 Console.WriteLine($"height={height}");24 Console.WriteLine($"area={rectangle.Area10}");25}Console.WriteLine($"area={rectangle.Area}");
23 Console.WriteLine($"height={height}");24 Console.WriteLine($"area={rectangle.Area10}");25}outputarea=10
height ← 6, rectangle ← Rectangle, rectangle.Width ← 5, rectangle.Height ← 6
15{16 static void Main()17 {18 int height→ 6 = 6;19 Rectangle rectangle→ Rectangle = new Rectangle();20 rectangle.Width→ 5 = 5;21 rectangle.Height→ 6 = height6;2223 Console.WriteLine($"height={height6}");24 Console.WriteLine($"area={rectangle.Area}");outputheight=6Console.WriteLine($"area={rectangle.Area}");
23 Console.WriteLine($"height={height}");24 Console.WriteLine($"area={rectangle.Area30}");25}Console.WriteLine($"area={rectangle.Area}");
23 Console.WriteLine($"height={height}");24 Console.WriteLine($"area={rectangle.Area30}");25}outputarea=30