01. ํด๋ž˜์Šค์™€ ๊ฐ์ฒด

2022. 4. 5. 16:53ยท๐Ÿ’ป Programming Language/C#

ํด๋ž˜์Šค์™€ ๊ฐ์ฒด


  • ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ(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
'๐Ÿ’ป Programming Language/C#' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • 05. this, this() ์ƒ์„ฑ์ž
  • 04. ๊นŠ์€ ๋ณต์‚ฌ์˜ ์ดํ•ด (Deep Copy)
  • 03. static ํ•„๋“œ์™€ static ๋ฉ”์†Œ๋“œ
  • 02. ์ƒ์„ฑ์ž์™€ ์ข…๋ฃŒ์ž
S.Honey
S.Honey
  • S.Honey
    Algo ์“ฐ์ž
    S.Honey
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (123)
      • ํšŒ๊ณ  (0)
        • ์ทจ์—… ํ›„ ํšŒ๊ณ  (0)
      • ๐Ÿƒ Frontend Road-Map (2)
        • ๐Ÿšฉ Summary (1)
        • ๐Ÿ“š Road-Map Contents (1)
        • ๐ŸŸง HTML (0)
        • ๐ŸŸฆ CSS (0)
        • ๐ŸŸจ Javascript (0)
        • โฌœ React (0)
        • ๐ŸŸช Redux (0)
      • Backend (0)
        • QueryDSL (0)
      • ๐Ÿ’ป Programming Language (54)
        • C# (51)
        • Flutter-Dart (3)
        • Java (0)
      • ๐Ÿ“š Computer Science (4)
        • Algorithms (4)
        • Database (0)
        • Network (0)
        • Operating System(OS) (0)
      • ๐Ÿ’ฏ CodingTest (60)
        • BaekJoon (22)
        • Programmers (34)
        • CodeTree (4)
      • โœ’๏ธ Design Pattern (1)
      • ๐Ÿฑ Etc (2)
        • Jenkins Plugin ์ œ์ž‘๊ธฐ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

    • ๊ณต์ง€์‚ฌํ•ญ

      • ๐Ÿ“– ๊ณต๋ถ€ ์ฐธ๊ณ  ๊ต์žฌ ๋ฐ ์ž๋ฃŒ
    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

      programmers
      ์ž๋ฃŒ๊ตฌ์กฐ
      ์ฝ”๋“œํŠธ๋ฆฌ
      ์‹œ๋ฎฌ๋ ˆ์ด์…˜
      c#
      ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
      ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰
      JavaScript
      Algorithm
      ์‚ผ์„ฑsw์—ญํ…Œ
      ์นด์นด์˜ค
      ํŒŒ์ด์ฌ
      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
      ์“ฐ์…จ์ž–์•„
      JS
      DART
      DP
      BAEKJOON
      ์ด์ง„ํƒ์ƒ‰
      ๋ฐฑ์ค€
      ๋ฌธ์ž์—ด ํŒŒ์‹ฑ
      ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      BFS
      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      ์Šคํ„ฐ๋””
      Java
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
      Flutter
      sort
      ๊ตฌํ˜„
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
    S.Honey
    01. ํด๋ž˜์Šค์™€ ๊ฐ์ฒด
    ์ƒ๋‹จ์œผ๋กœ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”