์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - C#ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ

2020. 9. 10. 17:56ใ†์ „๊ณต ๊ณผ๋ชฉ/์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - C#ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ

 

C# ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

--> .NET์— ์ตœ์ ํ™”๋œ ์–ธ์–ด, ์ž๋ฐ”์˜ ๋‹จ์ ์„ ๋ณด์™„(์ปดํŒŒ์ผ ๋ฐฉ๋ฒ•)

 

C#์˜ ํŠน์ง•

--> ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด, ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ์™€ ์ด๋ฒคํŠธ ์กด์žฌ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ, ์˜ˆ์™ธ์ฒ˜๋ฆฌ, ์—ฐ์‚ฐ์ž ์ค‘๋ณต, ์ œ๋„ค๋ฆญ.

 

์ด ์žฅ์—์„œ๋Š” 

C#์˜ ์†Œ๊ฐœ์™€ ํŠน์ง•์„ ๊ณต๋ถ€ํ•œ ๋’ค, C#์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด๋“ค(์œ„์— ์žˆ๋Š” ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ๊ฐ™์€)์„ ๊ณต๋ถ€ํ•œ๋‹ค. 

 

์ฒ˜์Œ๋ถ€ํ„ฐ ๋„ˆ๋ฌด ๊นŠ์ด ๋“ค์–ด๊ฐ€์ง„ ์•Š๊ณ  '์•„ ์ด๊ฐœ๋…์€ ์ด๋Ÿฐ๊ฑฐ๊ตฌ๋‚˜'๋งŒ ์งš๊ณ  ๋„˜์–ด๊ฐˆํ…Œ๋‹ˆ ์ดˆ๋ณด์ž๋“ค์€ ๋‘๋ ค์›€์„ ๊ฐ€์ง€์ง€ ์•Š๊ธธ ๋ฐ”๋ž€๋‹ค.

 

C#์€ C++๊ณผ Java์˜ ์•„๋“ค๊ฐ™์€ ๊ฒƒ์ด๋ผ๊ณ  ํ•„์ž๋Š” ์ƒ๊ฐํ•œ๋‹ค. C#์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ด ๋‘˜์˜ ์žฅ์ ์„ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๋Š” ๋Š๋‚Œ์ด ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

C#์˜ ์‹คํ–‰๊ณผ์ •์€ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

 

๋‹ค์Œ ์˜ˆ์ œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณด์ž

 

using System

class Coldingsite {

  public static void main() {

    Console.WriteLine("WelCome to Colding blog!");

    }

}

 

ํ•˜๋‚˜ํ•˜๋‚˜ ํŒŒํ—ค์ณ๋ณด์ž.

using --> Systemํด๋ž˜์Šค๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. ์ฆ‰ ์–ด๋”˜๊ฐ€์— ์ €์žฅ๋˜์–ด์žˆ์„ System์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ ์“ด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

class ํด๋ž˜์Šค์ด๋ฆ„  --> ํด๋ž˜์Šค์ด๋ฆ„์€ ์ง“๊ณ ์‹ถ์€๊ฑฐ ์ง“์ž. ์›ฌ๋งŒํ•˜๋ฉด ๋‚ด์šฉ๊ณผ ๊ด€๋ จ์žˆ๋Š” ๊ฒƒ์œผ๋กœ!

 

public static void main() --> ์ด๋Š” ๋ฉ”์ธํ•จ์ˆ˜์ด๋‹ค. public์€ ๋‹ค๋ฅธ๊ณณ์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค๋Š” ๋œป์ด๊ณ  static์€ ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค, void๋Š” ๋ฆฌํ„ดํƒ€์ž…์ด ์—†๋‹ค(์ฆ‰ ์ถœ๋ ฅ๋งŒ ํ•œ๋‹ค๊ฑฐ๋‚˜, ํ˜ธ์ถœ๋งŒ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.). main์€ ๋ง ๊ทธ๋Œ€๋กœ ํ•จ์ˆ˜์ด๋ฆ„์ด๋‹ค. mainํ•จ์ˆ˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ž„์˜๋กœ ๋งŒ๋“œ๋Š” ์‚ฌ์šฉ์ž ์ง€์ •ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ˆ ์ด ์  ์œ ์˜ํ•ด๋‘์ž. ๋งŒ์•ฝ ๋””๋ฒ„๊น…์„ ํ•˜๊ฒŒ ๋˜๋ฉด mainํ•จ์ˆ˜๋ฅผ ์ฐพ์•„๊ฐ€ ์‹คํ–‰์ด ๋œ๋‹ค. ์• ์ดˆ์— ํ™˜๊ฒฝ์ด ๊ทธ๋ ‡๊ฒŒ ์„ค์ •๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์—ฌ๊ธฐ์„œ using System์„ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋ผ๊ณ  ๋ถ€๋ฅด๊ณ 

Console.WriteLine()์„ ์ถœ๋ ฅ ๋ฉ”์†Œ๋“œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

์‹คํ–‰ ๊ณผ์ •์€ ์ด๋ ‡๋‹ค.

์œ„์˜ ์†Œ์ŠคํŒŒ์ผ์„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ปดํŒŒ์ผํ•˜๋ฉด exe(์‹คํ–‰ํŒŒ์ผ์ด)์ƒ๊ธฐ๊ณ  ๊ทธ ์‹คํ–‰ํŒŒ์ผ์„ ๋‹ค์‹œ ์ปดํ“จํ„ฐ ์–ธ์–ด๋กœ ๋ฒˆ์—ญํ•ด์„œ ์šฐ๋ฆฌ ์ฐฝ์— ๋„์›Œ์ง€๊ฒŒ ๋œ๋‹ค. ์ค‘์š”ํ•œ ๊ฑด ๋ฒˆ์—ญ๊ณผ์ •์ด ๋‘ ๋ฒˆ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์ด๋‹ค.

 

C# ๊ธฐ๋ณธํŠน์ง•

์ง€๋ฃจํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์ด๋‹ค. ์™ธ์šฐ๋ ค๊ณ  ํ•˜์ง€ ๋ง๊ณ  '์•„ ์ด๋Ÿฐ๊ฒŒ ์“ฐ์ด๊ตฌ๋‚˜'๋กœ ์•Œ์•„๋‘๊ณ  ๋‚˜์ค‘์— ํ•„์š”ํ•  ๋•Œ ์ฐพ์•„์„œ ์“ฐ๋ฉด ๋œ๋‹ค.

 

์ž๋ฃŒํ˜•

  • ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’๊ณผ ์—ฐ์‚ฐ์˜ ์ข…๋ฅ˜๋ฅผ ๊ฒฐ์ •
  • C#์˜ ์ž๋ฃŒํ˜•์€ ๊ฐ’ํ˜•๊ณผ ์ฐธ์กฐํ˜•์ด ์กด์žฌํ•œ๋‹ค. 
  • ์ˆซ์žํ˜•์—๋Š” ์ •์ˆ˜ํ˜•๊ณผ ์‹ค์ˆ˜ํ˜•์ด ์žˆ๋‹ค. ์ •์ˆ˜ํ˜• ex)short, int ์‹ค์ˆ˜ํ˜• ex)double, decimal

์—ฐ์‚ฐ์ž

  • C์™€ ์œ ์‚ฌ
  • ํ˜• ๊ฒ€์‚ฌ ์—ฐ์‚ฐ์ž is - ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ์ง€ ๊ฒ€์‚ฌ, as - ์ง€์ •ํ•œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜

๋ฐฐ์—ดํ˜•

  • ๊ฐ™์€ ํ˜•์„ ํ†ต์งธ๋กœ ๋ฌถ์€ ํ˜•ํƒœ ex) int[] vector; //ex) int[5] vector : intํ˜•์€ 4๋ฐ”์ดํŠธ์ด๊ณ  4๋ฐ”์ดํŠธ์งœ๋ฆฌ 5๊ฐœ์˜ ๋ฉ”๋ชจ๋ฆฌ 20๋ฐ”์ดํŠธ๊ฐ€ ์ƒ๊ธด๋‹ค. ("์ •ํ™•ํžˆ๋Š” ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ๋‹ค"์ด๋‹ค. new๋ฅผ ํ†ตํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ). ์ด๋Š” ๋’ค์—์„œ ์•Œ์•„๋ณด์ž.

์ŠคํŠธ๋ง

  • ๋ฌธ์ž์—ด์ด๋‹ค. string s ="hello"๋ฅผ ํ•˜๋ฉด s๋ผ๋Š” ๋ณ€์ˆ˜๋Š” hello๊ฐ€ ์žˆ๋Š” ๊ณณ์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋œ๋‹ค.
  • ์—ฐ๊ฒฐ --> string s = "hello";  s+= "world";  ์•ž์— ๋‘๊ฐœ๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด Hello World๊ฐ€ ๋œ๋‹ค.

์ด์ œ๋ถ€ํ„ฐ C#์˜ ์ค‘์š”ํ•œ ํŠน์ง•๋“ค์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

 

1) ํด๋ž˜์Šค

  • ๊ฐœ๋…์€ ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ํ‹€ ์„ค๊ณ„๋„ ์ด๋ ‡๊ฒŒ ๋ณดํ†ต ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.
  • ๊ฐ์ฒด์™€ ํด๋ž˜์Šค๋ฅผ ๊ฐ„๋‹จํžˆ ์ •์˜ํ•ด๋ณด์ž. ํด๋ž˜์Šค๋Š” ๋ถ•์–ด๋นต์„ ๋งŒ๋“œ๋Š” ํŒ์ด๋‹ค. ์ด๋•Œ ํŒ์ด ํด๋ž˜์Šค์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒ์„ ํ†ตํ•ด์„œ ๋ถ•์–ด๋นต์„ ๋งŒ๋“œ๋Š”๋ฐ ์ด๋•Œ ๋ถ•์–ด๋นต์ด ๊ฐ์ฒด(instance)์ด๋‹ค.
  • ํด๋ž˜์Šค๋Š” ํ•„๋“œ์˜์—ญ๊ณผ ๋ฉ”์†Œ๋“œ์˜์—ญ์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, ํ•„๋“œ์˜์—ญ์€ ๊ธฐ๋ณธ์ •๋ณด ๊ฐ™์€ ๊ฒƒ๋“ค์ด๋‹ค. ex)์ž๋™์ฐจ์˜ ์ตœ๋Œ€์†๋„, ์ž๋™์ฐจ ์ƒ‰๊น”, ํšŒ์‚ฌ๋ช…. ๋ฉ”์†Œ๋“œ์˜์—ญ์€ ์ž๋™์ฐจ๊ฐ€ ํ–‰ํ•˜๋Š” ๊ฒƒ๋“ค์ด๋‹ค. ex)์ž๋™์ฐจ ์ถœ๋ฐœ(์‹œ๋™=ON, ๊ธฐ์–ด1๋‹จ ๋“ฑ). ํ•„๋“œ๋Š” ๋ช…์‚ฌ ๋ฉ”์†Œ๋“œ๋Š” ๋™์‚ฌ์ด๋‹ค. ์•„๋ž˜์— ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•œ ๊ฒƒ์„ ๋ณด์ž.
class RamenMaker {
  public bool onState;
  public bool StartRamenMaker() {
    if(Onstate == true)
      Console.WriteLine("The RamenMaker is already on");
    else 
      Console.WriteLine("The RamenMaker is now on");
    }
   }

 

์œ„์˜ ํด๋ž˜์Šค๊ฐ€ ์„ค๊ณ„๊ฐ€ ๋˜์—ˆ๋Š”๋ฐ ์ด๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด mainํ•จ์ˆ˜์— RamenMakerํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ํด๋ž˜์Šค๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด์„œ onState์— ์ ‘๊ทผํ•ด, true๋‚˜ false๊ฐ’์„ ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ ํ›„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค.

 

๊ธ€์ด ์ดํ•ด๊ฐ€ ์•ˆ๋ ๋–„๋Š” ์ฝ”๋“œ๊ฐ€ ์งฑ์ด๋‹ค.

public static void main() {

   RamenMaker rm = new RamenMaker rm();

   rm.onState = ture;      //onState๊ฐ’์— true๋ฅผ ์คฌ์œผ๋‹ˆ if์˜ true์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์žฅ์ด ์ถœ๋ ฅ๋œ๋‹ค.

   rm.StartRamenMaker;

}

 

2) ํ”„๋กœํผํ‹ฐ

ํ”„๋กœํผํ‹ฐ๋ž€ public์ด ์•„๋‹Œ private์ ‘๊ทผ์ด ๊ฑธ๋ ค์žˆ๋Š” ํ•„๋“œ๋ฅผ ํ˜•์‹์ ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค.

๊ฐ’์„ ์ง€์ •ํ•˜๋Š”(set), ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š”(get)์ด ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋ˆ ์ง„๋‹ค.

 

ํ”„๋กœํผํ‹ฐ์˜ ํŠน์ง•

  • ํ•„๋“œ์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋˜์ง€๋งŒ, ๋ฉ”์†Œ๋“œ์ฒ˜๋Ÿผ ๋™์ž‘
  • ๋ฐฐ์ •๋ฌธ์˜ ์™ผ์ชฝ์—์„œ ์‚ฌ์šฉ๋˜๋ฉด ์…‹, ์˜ค๋ฅธ์ชฝ์—์„œ ์‚ฌ์šฉ๋˜๋ฉด ๊ฒŸ (์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ์ดํ•ดํ•˜๋„๋ก ํ•˜์ž)
using System
 class PropertyClass {
   private int privateValue;
   public int PrivateValue {
   get {return privateValue;}
   set {privateValue = value;}
   }
   
   public void PrintValue() {
   Console.WriteLine("Hidden Value = " + privateValue);
   }
  }
  class PropertyApp {
    public static void main() {
       int n;
       PropertyClass obj = new PropertyClass();
       obj.PrivateValue = 100   //set method
       obj.PrintValue();
       n = obj.PrivateValue; // get method
       Console.WriteLine("Value =" +n);
       }
     }
     
     
    
  
  

 

์ฝ”๋“œ๋ฅผ ๋œฏ์–ด๋ณด์ž.

๋จผ์ € privateValue๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ํ•„๋“œ์— ์„ ์–ธํ–ˆ๋‹ค. ๊ทธ ํ›„ ๋Œ€๋ฌธ์ž PrivateValue๋ผ๋Š” ํ•จ์ˆ˜์— getํ•จ์ˆ˜์™€ setํ•จ์ˆ˜๋ฅผ ์ง€์ •ํ–ˆ๋‹ค. ์ด๊ฒƒ์ด ํ”„๋กœํผํ‹ฐ์ด๋‹ค.

๋ฐ‘์— printํ•จ์ˆ˜๋Š” ํ˜ธ์ถœํ–ˆ์„ ๋•Œ WriteLine๋‚ด๋ถ€์— ์žˆ๋Š” ๋ฌธ์ž์—ด ๋ฐ ๋ณ€์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋ฐ‘์— APP์ด๋ผ๋Š” ํด๋ž˜์Šค์˜ ๋ฉ”์ธํ•จ์ˆ˜์—์„œ obj๋ฅผ PropertyClass์˜ privateValue๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋ฏ€๋กœ ์ด ํ˜•์‹์˜ ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  obj.PrivateValue = 100; ์ฒ˜๋Ÿผ ์™ผ์ชฝ์— ์‚ฌ์šฉ๋˜์—ˆ์œผ๋‹ˆ set, n= obj.PrivateValue ์ฒ˜๋Ÿผ ์˜ค๋ฅธ์ชฝ์— ์‚ฌ์šฉ๋˜์—ˆ์œผ๋‹ˆ get์ด๋‹ค. ์™ผ์ชฝ ์˜ค๋ฅธ์ชฝ ๊ตณ์ด ๋‚˜๋ˆ ์„œ ์™ธ์šธํ•„์š”์—†๋‹ค. ๊ทธ๋ƒฅ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๊ฑธ ์™ผ์ชฝ์— ๋‹ด๋Š”๋‹ค๋Š” ๊ฒƒ๋งŒ ์ƒ๊ฐํ•˜๋ฉด ์†์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋‹ค์Œ์žฅ์— ์ด์–ด์„œ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ, ์ด๋ฒคํŠธ, ์Šค๋ ˆ๋“œ, ์ œ๋„ค๋ฆญ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.