28. μ€μ²© ν΄λμ€
μ€μ²© ν΄λμ€λ ν΄λμ€ μμ μ μΈλμ΄ μλ ν΄λμ€μ΄λ€.
ν΄λμ€ μμ ν΄λμ€λ₯Ό μ μΈνλ κ²μ΄ μ λΆμ΄λ€.
κ°μ²΄λ₯Ό μμ±νκ±°λ κ°μ²΄μ λ©μλλ₯Ό νΈμΆνλ λ°©λ²λ λ³΄ν΅ ν΄λμ€μ λκ°λ€.
μ€μ²©ν΄λμ€λ μμ μ΄ μμλ ν΄λμ€μ λ©€λ²μ μμ λ‘κ² μ κ·Όν μ μλ€.(private λ©€λ²λ!)
μ€μ²©ν΄λμ€λ₯Ό μ°λ μ΄μ
- ν΄λμ€ μΈλΆμ 곡κ°νκ³ μΆμ§ μμ νμμ λ§λ€κ³ μ ν λ
- νμ¬ ν΄λμ€μ μΌλΆλΆμ²λΌ ννν μ μλ ν΄λμ€λ₯Ό λ§λ€κ³ μ ν λ
λ€λ₯Έ ν΄λμ€μ private λ©€λ²μλ λ§κ΅¬ μ κ·Όν μ μλ μ€μ²© ν΄λμ€λ μλμ±μ 무λλ¨λ¦¬κΈ°λ νμ§λ§,
λ³΄λ€ μ μ°ν ννλ ₯μ νλ‘κ·Έλλ¨Έμκ² κ°μ Έλ€μ€λ€λ μ₯μ μ΄ μλ€.
class OuterClass
{
private int OuterMember;
class NestedClass
{
public void DoSomething()
{
OuterClass outer = new OuterClass();
outer.OuterMember = 10;
}
}
}
class OuterClass
{
class NesstedClass{}
}
<μμ μ½λ>
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace Overriding
{
class Configuration
{
private List<ItemValue> listConfig = new List<ItemValue>(); //μ€μ²© ν΄λμ€
public void SetConfig(string item, string value)
{
ItemValue iv = new ItemValue(); //리μ€νΈμ μμ κ°μ²΄ μμ±
iv.SetValue(this, item, value); //κ°μ²΄μ μ μ ν κ° ν λΉ
}
public string GetConfig(string item)
{
foreach(ItemValue iv in listConfig) //리μ€νΈμ μμΈ (μ€μ²©ν΄λμ€λ‘ λ§λ )κ°μ²΄ νμ
{
if (iv.GetItem() == item) //GetItem()λ‘ νΈμΆν κ²°κ³Όμ κ°μΌλ©΄
return iv.GetValue(); //GetValue()
}
return ""; //GetItem()λ‘ νΈμΆν κ°μ΄ μμΌλ©΄ λΉκ° μΆλ ₯
}
private class ItemValue //Configuration ν΄λμ€ μμ μ μΈλ μ€μ²© ν΄λμ€μ΄λ€.
{ //privateλ‘ μ μΈνκΈ° λλ¬Έμ
//Configuration ν΄λμ€ λ°μμλ 보μ΄μ§ μλλ€.
private string item;
private string value;
public void SetValue(Configuration config, string item, string value)
{
this.item = item; //μ΄κΈ°ν
this.value = value; //μ΄κΈ°ν
bool found = false; //리μ€νΈμ AddνκΈ° μν flag
for(int i=0; i<config.listConfig.Count; i++)
{
if(config.listConfig[i].item == item)
{
config.listConfig[i] = this;
found = true;
break;
}
}
if (found == false)
{
config.listConfig.Add(this); //κΈ°λ° ν΄λμ€ λ΄μ μλ 리μ€νΈμ μΆκ°(μ€μ²©ν΄λμ€νμ©)
}
}
public string GetItem(){ return item; }
public string GetValue() { return value; }
}
}
class MainApp
{
static void Main(string[] args)
{
Configuration config = new Configuration();
config.SetConfig("Version", "V 5.0.0");//μμ΄ν
, value
config.SetConfig("Size", "655,324 KB");//μμ΄ν
, value
WriteLine(config.GetConfig("Version")); //V 5.0.0
WriteLine(config.GetConfig("Size")); //655,324 KB
config.SetConfig("Version","V 5.0.1");//μμ΄ν
, value
WriteLine(config.GetConfig("Version")); //V 5.0.1
config.SetConfig("Version", "V 5.0.7");//μμ΄ν
, value
WriteLine(config.GetConfig("Version")); //V 5.0.7
Configuration config1 = new Configuration();
config1.SetConfig("Version", "V 5.0.2");//μμ΄ν
, value
config1.SetConfig("Size", "784,324 KB");//μμ΄ν
, value
WriteLine(config1.GetConfig("Version")); //V 5.0.2
WriteLine(config1.GetConfig("Size")); //784,324 KB
}
}
}
<μΆλ ₯ κ²°κ³Ό>
V 5.0.0
655,324 KB
V 5.0.1
V 5.0.7
V 5.0.2
784,324 KB
<μμ 2>
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace Overriding
{
class Configuration
{
List<ItemValue> listConfig = new List<ItemValue>();
public void SetConfig(string item, string value)
{
ItemValue iv = new ItemValue();
iv.SetValue(this,item,value);
}
public string GetConfig(string item)
{
foreach(ItemValue iv in listConfig)
{
if (iv.GetItem() == item)
return iv.GetValue();
}
return "No Item";
}
private class ItemValue
{
private string item;
private string value;
public void SetValue(Configuration config, string item, string value)
{
this.item = item;
this.value = value;
bool found = false;
for(int i=0; i<config.listConfig.Count; i++)
{
if(config.listConfig[i].item == item)
{
config.listConfig[i] = this;
found = true;
break;
}
}
if (found == false)
config.listConfig.Add(this);
}
public string GetItem()
{
return item;
}
public string GetValue()
{
return value;
}
}
}
class MainApp
{
static void Main(string[] args)
{
Configuration config = new Configuration();
config.SetConfig("Version","V 5.0");
config.SetConfig("Size", "655,324 KB");
WriteLine(config.GetConfig("test")); //No Item
WriteLine(config.GetConfig("Version")); //V 5.0
WriteLine(config.GetConfig("Size")); //655,324 KB
config.SetConfig("Version", "V 5.1");
WriteLine(config.GetConfig("Version")); //V 5.1
}
}
}
<μΆλ ₯ κ²°κ³Ό>
No Item
V 5.0
655,324 KB
V 5.1
<μ΅μ’ μ°μ΅>
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace Overriding
{
class Configuration
{
List<Itemvalue> listconfig = new List<Itemvalue>();
public void SetConfig(string item, string value)
{
Itemvalue iv = new Itemvalue();
iv.SetValue(this, item, value);
}
public string GetConfig(string item)
{
foreach(Itemvalue iv in listconfig)
{
if (iv.GetItem() == item)
return iv.GetValue();
}
return "μμ΄μ κ·Έλ°κ±°.";
}
private class Itemvalue
{
private string item;
private string value;
public void SetValue(Configuration config, string item, string value)
{
this.item = item;
this.value = value;
bool found = false;
for(int i=0; i< config.listconfig.Count; i++)
{
if(config.listconfig[i].item == item)
{
config.listconfig[i] = this;
found = true;
break;
}
}
if (found == false)
config.listconfig.Add(this);
}
public string GetItem() { return item; }
public string GetValue() { return value; }
}
}
class MainApp
{
static void Main(string[] args)
{
Configuration config = new Configuration();
config.SetConfig("μ₯λΉ","μ°©ν ν");
config.SetConfig("ν«", "ν λΌ");
WriteLine(config.GetConfig("μ₯λΉ")); //μ°©ν ν
WriteLine(config.GetConfig("ν«")); //ν λΌ
config.SetConfig("μ₯λΉ", "λμ ν");
WriteLine(config.GetConfig("μ₯λΉ")); //λμ ν
WriteLine(config.GetConfig("μμ")); //μμ΄μ κ·Έλ°κ±°.
Configuration config2 = new Configuration();
config2.SetConfig("μ₯λΉ", "μ°©ν ν");
WriteLine(config2.GetConfig("μ₯λΉ")); //μ°©ν ν
WriteLine(config.GetConfig("μ₯λΉ")); //λμ ν
}
}
}
<μΆλ ₯ κ²°κ³Ό>
μ°©ν ν
ν λΌ
λμ ν
μμ΄μ κ·Έλ°κ±°.
μ°©ν ν
λμ ν