Classes and Objects
Composition
Composition stores one object inside another object.
composition
Composition builds larger objects from smaller objects.
Composition
Composition.cs
Replay: real traced execution (multi-file project)
using System;
class Address
{
public string City;
public Address(string city)
{
City = city;
}
}
class Customer
{
public string Name;
public Address Address;
public Customer(string name, Address address)
{
Name = name;
Address = address;
}
}
class Program
{
static void Main()
{
string city = "Lima";
Address address = new Address(city);
Customer customer = new Customer("Mira", address);
string summary = customer.Name + "@" + customer.Address.City;
Console.WriteLine($"city={city}");
Console.WriteLine($"summary={summary}");
}
}
using System;
class Address
{
public string City;
public Address(string city)
{
City = city;
}
}
class Customer
{
public string Name;
public Address Address;
public Customer(string name, Address address)
{
Name = name;
Address = address;
}
}
class Program
{
static void Main()
{
string city = "Oslo";
Address address = new Address(city);
Customer customer = new Customer("Mira", address);
string summary = customer.Name + "@" + customer.Address.City;
Console.WriteLine($"city={city}");
Console.WriteLine($"summary={summary}");
}
}
using System;
class Address
{
public string City;
public Address(string city)
{
City = city;
}
}
class Customer
{
public string Name;
public Address Address;
public Customer(string name, Address address)
{
Name = name;
Address = address;
}
}
class Program
{
static void Main()
{
string city = "Cairo";
Address address = new Address(city);
Customer customer = new Customer("Mira", address);
string summary = customer.Name + "@" + customer.Address.City;
Console.WriteLine($"city={city}");
Console.WriteLine($"summary={summary}");
}
}
city ← Lima
26{27 static void Main()28 {29 string city→ Lima = "Lima"; //@city="Oslo", "Cairo"30 Address address = new Address(city);31 Customer customer = new Customer("Mira", address);public Address(string city)
7public Address(string cityLima)8{9 City = cityLima;10}address ← Address
29string city = "Lima"; //@city="Oslo", "Cairo"30Address address→ Address = new Address(city);31Customer customer = new Customer("Mira", address);32string summary = customer.Name + "@" + customer.Address.City;public Customer(string name, Address address)
18public Customer(string nameMira, Address addressAddress)19{20 Name = nameMira;21 Address = addressAddress;22}customer ← Customer, summary ← Mira@Lima
30 Address address = new Address(city);31 Customer customer→ Customer = new Customer("Mira", address);32 string summary→ Mira@Lima = customer.NameMira + "@" + customer.Address.CityLima;3334 Console.WriteLine($"city={cityLima}");35 Console.WriteLine($"summary={summaryMira@Lima}");36}outputcity=Lima summary=Mira@Lima
city ← Oslo
26{27 static void Main()28 {29 string city→ Oslo = "Oslo";30 Address address = new Address(city);31 Customer customer = new Customer("Mira", address);public Address(string city)
7public Address(string cityOslo)8{9 City = cityOslo;10}address ← Address
29string city = "Oslo";30Address address→ Address = new Address(city);31Customer customer = new Customer("Mira", address);32string summary = customer.Name + "@" + customer.Address.City;public Customer(string name, Address address)
18public Customer(string nameMira, Address addressAddress)19{20 Name = nameMira;21 Address = addressAddress;22}customer ← Customer, summary ← Mira@Oslo
30 Address address = new Address(city);31 Customer customer→ Customer = new Customer("Mira", address);32 string summary→ Mira@Oslo = customer.NameMira + "@" + customer.Address.CityOslo;3334 Console.WriteLine($"city={cityOslo}");35 Console.WriteLine($"summary={summaryMira@Oslo}");36}outputcity=Oslo summary=Mira@Oslo
city ← Cairo
26{27 static void Main()28 {29 string city→ Cairo = "Cairo";30 Address address = new Address(city);31 Customer customer = new Customer("Mira", address);public Address(string city)
7public Address(string cityCairo)8{9 City = cityCairo;10}address ← Address
29string city = "Cairo";30Address address→ Address = new Address(city);31Customer customer = new Customer("Mira", address);32string summary = customer.Name + "@" + customer.Address.City;public Customer(string name, Address address)
18public Customer(string nameMira, Address addressAddress)19{20 Name = nameMira;21 Address = addressAddress;22}customer ← Customer, summary ← Mira@Cairo
30 Address address = new Address(city);31 Customer customer→ Customer = new Customer("Mira", address);32 string summary→ Mira@Cairo = customer.NameMira + "@" + customer.Address.CityCairo;3334 Console.WriteLine($"city={cityCairo}");35 Console.WriteLine($"summary={summaryMira@Cairo}");36}outputcity=Cairo summary=Mira@Cairo