ํด๋์ค์ ๊ฐ์ฒด
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ(Object Oriented Programming => OOP) : ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ๋ช
๋ น์ด์ ๋ชฉ๋ก์ผ๋ก ๋ณด๋ ์๊ฐ์์ ๋ฒ์ด๋ ์ฌ๋ฌ ๊ฐ์ ๋
๋ฆฝ๋ ๋จ์, ์ฆ
๊ฐ์ฒด
๋ค์ ๋ชจ์์ผ๋ก ํ์ ํ๊ณ ์ ํ๋ ๊ฒ์ด๋ค. ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค. - ๋์ ๋ณด์ด๋ ๋ชจ๋ ๊ฒ๋ค์ ๊ฐ์ฒด์ด๊ณ ํ๋ก๊ทธ๋จ์์์ ๊ฐ์ฒด๋ฅผ ๊ตฌํํ ์ ์๋ค.
- ๊ฐ์ฒด๋ค์ ๊ฐ๊ฐ ์ ๋ง๋ค์ ํน์ฑ์ ๊ฐ์ง๊ณ ์๋ค.
- ์๋ฅผ๋ค์ด ์ฌ๋์ ์๋ก ๋ค๋ฉด ์ฌ๋์ ์ด๋ฆ, ์ฌ๋์ ๋์ด, ์ฑ๋ณ ๋ฑ๋ฑ ์ฌ๋ฌ๊ฐ์ง ํน์ฑ์ ํตํด ์ฌ๋์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ๋ฌ์ฌํ ์ ์๋ค.
- ์ด๋ฌํ ํน์ฑ์ ์์ฑ์ด๋ผ ํ๊ณ , ๊ฐ์ฒด๊ฐ ํ ์ ์๋ ๊ธฐ๋ฅ ํน์ ํ๋์ ๋ฉ์๋๋ผ๊ณ ํํํ๋ค.
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ฅ ๋ง์ด ๋ฑ์ฅํ๋ ์ฉ์ด๋
class
์ด๋ค. - ํด๋์ค์ ์ฌ๋์ด๋ผ๊ณ ํ๋ ๊ฐ์ฒด๋ฅผ ํด๋์ค์ ๋ฌ์ฌ(์ถ์ํ)ํ๋ค๊ณ ์๊ฐํ๋ฉด name, gender, age๋ฑ๋ฑ์ ์์ฑ์ ๊ฐ์ง๊ณ speaking์ด๋ผ๊ณ ํ๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง person์ด๋ผ๋ ํด๋์ค๋ฅผ ๋ชจ๋ธ๋ง ํ ์ ์๋ค.
- ์ด๋ ๊ฒ ์ฌ๋์ ํน์ฑ์ ๋ฝ์ class๋ฅผ ๋ง๋ ๋ค ํด๋น ํด๋์ค๋ฅผ ์ด์ฉํด ๊ฐ์ฒด๋ก ์ค์ฒดํ๋ฅผ ํ ์ ์๋ค. ์ด๋ ๊ฒ ์ค์ฒดํ๊ฐ ๋ ๊ฒ์ ์ธ์คํด์ค๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ์ฆ, ๋ถ์ด๋นต ํ, ์ค๊ณ๋ = class , ๋ง๋ค์ด์ง ๋ถ์ด๋นต, ๊ฑด์ถ๋ฌผ = ์ธ์คํด์ค(instance)
- ์ด๋ ๊ฒ ํด๋์ค๋ฅผ ์ค๊ณํ์ฌ ์ํ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋ค.
ํด๋์ค๋
๊ฐ์ฒด๊ฐ ๋ํ๋ด๋ ์์ฑ = ํ๋
๊ฐ์ฒด๊ฐ ํฌํจํ๋ ๊ธฐ๋ฅ = ๋ฉ์๋
์ ํฌํจํ๋ค.
- ๋จ์ํ ํด๋์ค๋ฅผ ์ ์ธํ๋ค๊ณ ์ค์กดํ๋ ๊ฐ์ฒด๊ฐ ๋๋ ๊ฒ์ด ์๋๋ค.
- ์ค์กดํ๋ ๊ฐ์ฒด์ ๊ฐ์ด ๋ง๋ค๊ณ ์ถ์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ค์ผํ๋๋ฐ ์ด๋ฌํ ๊ณผ์ ์ ๊ฐ์ฒดํ(instanceํ)๋ผ๊ณ ํ๋ค.
- ์ด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ธฐ ์ํด์ new ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋ค.
- ํด๋์ค๋ผ๊ณ ํ๋ ํ์ ์ด์ฉํด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค ๊ฐ์ฒด๋ฅผ ๋ง๋ค์์๋ค.
ํด๋์ค
๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ์ค๊ณ๋
์ด๊ณ , ์ค๊ณ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋์์ฑ
๊ณผ, ๊ธฐ๋ฅ์ ๋ํ๋ด๋๋ฉ์๋
๋ฅผ ๊ฐ์ง๋ค.
ํด๋์ค ์ฌ์ฉ ์์ ์ฝ๋
using System;
using System.Threading;
namespace ClassEx
{
class Person
{
public string name; // ์์ฑ
public string gender; // ์์ฑ
public int age; // ์์ฑ
public void speak() // ๊ธฐ๋ฅ ๋ฐ ํ๋ = ๋ฉ์๋
{
Console.WriteLine($"์๋
ํ์ธ์ : ์ ๋ {this.name} ์
๋๋ค. {this.gender} ์
๋๋ค.");
}
public void walk() // ๊ธฐ๋ฅ ๋ฐ ํ๋ = ๋ฉ์๋
{
Console.WriteLine($"{this.name} ํฐ๋ฒ
ํฐ๋ฒ
");
}
}
class MainApp
{
static void Main(string[] args)
{
Person person = new Person();
// new ์ฐ์ฐ์๋ฅผ ์ด์ฉํด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ฃผ๋ ๊ฒ => ์ธ์คํด์คํ(๊ฐ์ฒดํ)
Person person1 = new Person();
// ๊ฐ๊ฐ์ ์๋ก ๋ค๋ฅธ ์ธ์คํด์ค์ด๋ค.
person.name = "ํ๊ธธ๋";
person.gender = "๋จ์ฑ";
person1.name = "ํ๊ธธ์";
person1.gender = "์ฌ์ฑ";
person.speak();
person1.speak();
person.walk();
person1.walk();
}
}
}
Output
์๋
ํ์ธ์ : ์ ๋ ํ๊ธธ๋ ์
๋๋ค. ๋จ์ฑ ์
๋๋ค.
์๋
ํ์ธ์ : ์ ๋ ํ๊ธธ์ ์
๋๋ค. ์ฌ์ฑ ์
๋๋ค.
ํ๊ธธ๋ ํฐ๋ฒ
ํฐ๋ฒ
ํ๊ธธ์ ํฐ๋ฒ
ํฐ๋ฒ
'๐ป Programming Language > C#' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
06. ์ ๊ทผ์ ํ์(Access Modifier) (0) | 2022.04.06 |
---|---|
05. this, this() ์์ฑ์ (0) | 2022.04.06 |
04. ๊น์ ๋ณต์ฌ์ ์ดํด (Deep Copy) (0) | 2022.04.06 |
03. static ํ๋์ static ๋ฉ์๋ (0) | 2022.04.06 |
02. ์์ฑ์์ ์ข ๋ฃ์ (0) | 2022.04.06 |