C#

    36. μΈν„°νŽ˜μ΄μŠ€μ˜ κΈ°λ³Έ κ΅¬ν˜„ λ©”μ„œλ“œ

    36. μΈν„°νŽ˜μ΄μŠ€μ˜ κΈ°λ³Έ κ΅¬ν˜„ λ©”μ„œλ“œ

    λ ˆκ±°μ‹œ(μœ μ‚°) μ½”λ“œλŠ” μ—…κ·Έλ ˆμ΄λ“œμ— κ°λ³„ν•œ μ£Όμ˜κ°€ ν•„μš”ν•˜λ‹€. 초기 버전을 섀계할 λ•Œ λ†“μΉœ λ©”μ†Œλ“œλ₯Ό μΈν„°νŽ˜μ΄μŠ€μ— μ•ˆμ „ν•˜κ²Œ μΆ”κ°€ν•  수 μžˆμ„κΉŒ? λ‹€μŒκ³Ό 같이 λ¬΄μž‘μ • ILogger에 μƒˆ λ©”μ†Œλ“œλ₯Ό μΆ”κ°€ν•œλ‹€κ³  ν•΄λ³΄μž... interface ILogger { void WriteLog(string message); void WriteError(string error); //μƒˆλ‘œμš΄ λ©”μ†Œλ“œ μΆ”κ°€ } κ·Έ κ²°κ³Ό ILoggerλ₯Ό μƒμ†ν•˜λŠ” λͺ¨λ“  ν΄λž˜μŠ€μ— λŒ€ν•΄ 'μΈν„°νŽ˜μ΄μŠ€ 멀버λ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•ŠλŠ”λ‹€.'λŠ” μ—λŸ¬κ°€ λ°œμƒν•  것이닀. νŒŒμƒν΄λž˜μŠ€λŠ” μΈν„°νŽ˜μ΄μŠ€μ˜ λͺ¨λ“  λ©”μ†Œλ“œλ₯Ό κ΅¬ν˜„ν•˜λŠ” 것이 κΈ°λ³Έ κ·œμΉ™μ΄κΈ° λ•Œλ¬Έμ΄λ‹€. κΈ°λ³Έ κ΅¬ν˜„ λ©”μ†Œλ“œλŠ” 이런 μƒν™©μ—μ„œ μš”κΈ΄ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€. μΈν„°νŽ˜μ΄μŠ€μ— μƒˆλ‘œμš΄ λ©”μ†Œλ“œλ₯Ό μΆ”κ°€ν•  λ•Œ 기본적인 κ΅¬ν˜„μ²΄λ₯Ό 갖도둝 ν•΄μ„œ κΈ°..

    38. μΈν„°νŽ˜μ΄μŠ€ 예제1, 2 볡슡

    38. μΈν„°νŽ˜μ΄μŠ€ 예제1, 2 볡슡

    using System; using System.IO; namespace Interface { interface ILogger { void WriteLog(string message); } class ConsoleLogger : ILogger { public void WriteLog(string message) { Console.WriteLine("{0} {1}",DateTime.Now.ToLocalTime(),message); } } class ClimateMonitor { private ILogger logger; public ClimateMonitor(ILogger logger) { this.logger = logger; } public void start() { while(true) { Conso..

    37. μΆ”μƒν΄λž˜μŠ€ : μΈν„°νŽ˜μ΄μŠ€μ™€ 클래슀 사이

    좔상 ν΄λž˜μŠ€λŠ” "κ΅¬ν˜„"을 κ°€μ§ˆ 수 μžˆλ‹€. ν•˜μ§€λ§Œ ν΄λž˜μŠ€μ™€ 달리 μΈμŠ€ν„΄μŠ€λ₯Ό κ°€μ§ˆ 수 μ—†λ‹€. ν•œλ§ˆλ””λ‘œ 좔상 ν΄λž˜μŠ€λŠ” κ΅¬ν˜„μ„ κ°–λ˜ μΈμŠ€ν„΄μŠ€λŠ” λ§Œλ“€μ§€ λͺ»ν•œλ‹€. 그리고 좔상 λ©”μ†Œλ“œλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€. (μΆ”μƒλ©”μ†Œλ“œλŠ” μΆ”μƒν΄λž˜μŠ€κ°€ μΈν„°νŽ˜μ΄μŠ€μ˜ 역할도 ν•  수 있게 ν•΄μ£ΌλŠ” μž₯μΉ˜μ΄λ‹€. μ™œλƒν•˜λ©΄ κ΅¬ν˜„μ„ κ°–μ§€λŠ” λͺ»ν•˜μ§€λ§Œ νŒŒμƒ ν΄λž˜μŠ€μ—μ„œ λ°˜λ“œμ‹œ κ΅¬ν˜„ν•˜λ„λ‘ κ°•μ œν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. λ‹€μ‹œλ§ν•΄ μΆ”μƒν΄λž˜μŠ€λ₯Ό μƒμ†ν•˜λŠ” ν΄λž˜μŠ€λ“€μ΄ λ°˜λ“œμ‹œ 이 λ©”μ†Œλ“œλ₯Ό κ°–κ³  μžˆμ„ κ±°λž€λŠ” '약속'이닀.) C# μ»΄νŒŒμΌλŸ¬λŠ” 좔상 λ©”μ†Œλ“œκ°€ λ°˜λ“œμ‹œ public, protected, internal, protected internal ν•œμ •μž 쀑 ν•˜λ‚˜λ‘œ μˆ˜μ‹λ  것을 κ°•μš”ν•œλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 클래슀의 μ ‘κ·Όμ„± 원칙도, μΈν„°νŽ˜μ΄μŠ€μ˜ μ ‘κ·Όμ„± 원칙도 μ§€μΌœμ§ˆ 수 μžˆλ‹€. 좔상 ν΄λž˜μŠ€λŠ” ab..

    35. μΈν„°νŽ˜μ΄μŠ€ 닀쀑 상속

    ν΄λž˜μŠ€λŠ” μ—¬λŸ¬ 클래슀λ₯Ό ν•œκΊΌλ²ˆμ— 상속할 수 μ—†λ‹€.(죽음의 닀이아λͺ¬λ“œ : λͺ¨ν˜Έμ„± λ°œμƒ) 졜쑰의 클래슀(Ridable)κ°€ 두 개의 νŒŒμƒν΄λž˜μŠ€(Car, Plane)λ‘œλΆ€ν„° 상속받고, 이 λ‘κ°œμ˜ νŒŒμƒ 클래슀λ₯Ό λ‹€μ‹œ ν•˜λ‚˜μ˜ 클래슀(MyVehicle)κ°€ μƒμ†ν•˜λŠ” 것을 λ§ν•œλ‹€. μ—¬κΈ°μ„œ MyVehicleλŠ” Car의 Ride()λ©”μ†Œλ“œλ₯Ό 물렀받을지, Plane의 Ride()λ©”μ†Œλ“œλ₯Ό 물렀받을지, λͺ¨ν˜Έν•˜λ‹€. public abstract class Ridable { public abstract void Ride(); } public class Car : Ridable { public void Run() { Console.WriteLine("뢀릉뢀릉"); } public override void Ride() { Run(); } }..

    34. μΈν„°νŽ˜μ΄μŠ€λ₯Ό μƒμ†ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€

    String.Format λ©”μ„œλ“œ (System) | Microsoft Docs (이번 νŽ˜μ΄μ§€ μ˜ˆμ œμ—μ„œ μ‚¬μš©ν•œ String.Format λ©”μ„œλ“œ!) String.Format λ©”μ„œλ“œ (System) μ§€μ •λœ ν˜•μ‹μ— 따라 개체의 값을 λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•˜μ—¬ λ‹€λ₯Έ λ¬Έμžμ—΄μ— μ‚½μž… ν•©λ‹ˆλ‹€.Converts the value of objects to strings based on the formats specified and inserts them into another string. String.Format λ©”μ„œλ“œλ₯Ό 처음 사 docs.microsoft.com μΈν„°νŽ˜μ΄μŠ€λ₯Ό 상속할 수 μžˆλŠ” 것은 클래슀 뿐이 μ•„λ‹ˆλ‹€. 클래슀, κ΅¬μ‘°μ²΄λŠ” 물둠이고 μΈν„°νŽ˜μ΄μŠ€λ„ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 상속할 수 μžˆλ‹€. 기쑴의 μΈν„°νŽ˜μ΄μŠ€μ— μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•œ 인..

    33. μΈν„°νŽ˜μ΄μŠ€(1)

    33. μΈν„°νŽ˜μ΄μŠ€(1)

    https://youtu.be/8NhvqLl-o2A ν΄λž˜μŠ€λŠ” 객체의 청사진, μΈν„°νŽ˜μ΄μŠ€λŠ” 클래슀의 청사진 μΈν„°νŽ˜μ΄μŠ€λŠ” ν΄λž˜μŠ€κ°€ ν•΄μ•Όν•˜λŠ” 행동(즉, λ©”μ†Œλ“œ)을 κ²°μ • μΈν„°νŽ˜μ΄μŠ€λŠ” (기본적으둜) λ©”μ†Œλ“œ κ΅¬ν˜„μ„ κ°–μ§€ μ•ŠμŒ μΈν„°νŽ˜μ΄μŠ€λŠ” ν•„λ“œλ₯Ό κ°–μ§€ μ•ŠμŒ μΈν„°νŽ˜μ΄μŠ€λŠ” 약속이닀. μ™œλƒν•˜λ©΄ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μƒμ†ν•˜λŠ” 싀체 ν΄λž˜μŠ€λŠ” λ°˜λ“œμ‹œ μΈν„°νŽ˜μ΄μŠ€μ—μ„œ μ„ μ–Έλœ λ©”μ†Œλ“œλ₯Ό λͺ¨λ‘ κ΅¬ν˜„ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. 싀체 ν΄λž˜μŠ€κ°€ μ–΄λ–€ μΈν„°νŽ˜μ΄μŠ€μ˜ νŒŒμƒ ν΄λž˜μŠ€μΈμ§€λ₯Ό μ•Œκ³  μžˆλ‹€λ©΄ κ·Έ ν΄λž˜μŠ€κ°€ μ–΄λ–€ public λ©”μ†Œλ“œλ₯Ό μ œκ³΅ν•˜λŠ”μ§€λ„ νŒŒμ•…ν•  수 있음 [그것이 μ•½μ†μ΄λ‹ˆκΉŒ....(λ‚˜λ£¨ν† ν†€)] 컀λ„₯ν„°λŠ” 두 λΆ€ν’ˆμ„ μ—°κ²°ν•˜λŠ” 쀑간 λΆ€ν’ˆ μΈν„°νŽ˜μ΄μŠ€λŠ” 두 클래슀λ₯Ό μ΄μ–΄μ£ΌλŠ” 컀λ„₯ν„° μΈν„°νŽ˜μ΄μŠ€λŠ” 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ ν•œμΈ΅ 더 κ°•λ ₯ν•˜κ²Œ λ§Œλ“€μ–΄μ£ΌλŠ” μš”μ†Œμ΄λ‹€. 객체지ν–₯..

    이것이 C#이닀 7μž₯ μ—°μŠ΅λ¬Έμ œ μ°Έκ³ 

    이것이 C#이닀(κ°œμ •νŒ) 7μž₯ μ—°μŠ΅λ¬Έμ œ : 넀이버 λΈ”λ‘œκ·Έ (naver.com)

    32. νŠœν”Œ

    νŠœν”Œλ„ μ—¬λŸ¬ ν•„λ“œλ₯Ό 담을 수 μžˆλŠ” ꡬ쑰체이닀. ν•˜μ§€λ§Œ νŠœν”Œμ€ ν˜•μ‹ 이름이 μ—†λ‹€. κ·Έλž˜μ„œ νŠœν”Œμ€ μ‘μš© ν”„λ‘œκ·Έλž¨ μ „μ²΄μ—μ„œ μ‚¬μš©ν•  ν˜•μ‹μ„ μ„ μ–Έν•  λ•Œκ°€ μ•„λ‹Œ, μ¦‰μ„μ—μ„œ μ‚¬μš©ν•  볡합 데이터 ν˜•μ‹μ„ μ„ μ–Έν•  λ•Œ μ ν•©ν•˜λ‹€. νŠœν”Œμ€ κ΅¬μ‘°μ²΄μ΄λ―€λ‘œ κ°’ ν˜•μ‹μ΄λ‹€. κ°’ ν˜•μ‹μ€ μƒμ„±λœ 지역을 λ²—μ–΄λ‚˜λ©΄ μŠ€νƒμ—μ„œ μ†Œλ©Έλ˜κΈ° λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž¨μ— μž₯기적인 뢀담을 μ£Όμ§€ μ•ŠλŠ”λ‹€λŠ” μž₯점이 μžˆλ‹€. 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;..

    ν•„λ“œ, 멀버, μ§€μ—­λ³€μˆ˜, μ •μ ν•„λ“œ, 정적 λ©”μ†Œλ“œ κ°œλ… 정리

    C# κ°œλ…μ„œλ₯Ό λ³΄λ‹€λ³΄λ‹ˆ ν•„λ“œ, 멀버, μ§€μ—­λ³€μˆ˜, μ •μ ν•„λ“œ, 정적 λ©”μ†Œλ“œ κ°œλ…μ„ ν•œνŽ˜μ΄μ§€μ— 정리해놔야 μΆ”ν›„ ν˜Όλž€μ΄ μ—†κ² λ‹€ μ‹Άμ–΄μ„œ μ΄λ ‡κ²Œ 정리해둔닀. ν•„λ“œλŠ” 클래슀 μ•ˆμ— μ„ μ–Έλœ λ³€μˆ˜λ“€μ„ μΌμ»«λŠ”λ‹€.(νž™ μ˜μ—­μ— λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ή) 멀버: ν•„λ“œμ™€ λ©”μ†Œλ“œλ₯Ό λΉ„λ‘―ν•˜μ—¬ ν”„λ‘œνΌν‹°, 이벀트 λ“± 클래슀 내에 μ„ μ–Έλ˜λŠ” μš”μ†Œλ“€μ„ μΌμ»«λŠ”λ‹€. μ§€μ—­ λ³€μˆ˜: λ©”μ†Œλ“œ 내뢀에 μ„ μ–Έλœ λ³€μˆ˜μ΄λ‹€(μŠ€νƒ μ˜μ—­μ— λ©”λͺ¨λ¦¬ ν• λ‹Ή) 정적 ν•„λ“œ : static으둜 ν•œμ •ν•˜μ§€ μ•Šμ€ ν•„λ“œλŠ” μžλ™μœΌλ‘œ μΈμŠ€ν„΄μŠ€μ— μ†Œμ†λ˜λ©°, static으둜 ν•œμ •ν•œ ν•„λ“œλŠ” ν΄λž˜μŠ€μ— μ†Œμ†λœλ‹€. 정적 ν•„λ“œλ₯Ό λ§Œλ“€μ–΄μ„œ μ–»λŠ” 이득: static으둜 μˆ˜μ‹ν•œ ν•„λ“œλŠ” ν”„λ‘œκ·Έλž¨ 전체에 걸쳐 ν•˜λ‚˜λ§Œ λ§Œλ“€ 수 있게 λœλ‹€. κ·ΈλŸ¬λ―€λ‘œ ν”„λ‘œκ·Έλž¨ 전체에 걸쳐 κ³΅μœ ν•΄μ•Ό ν•˜λŠ” λ³€μˆ˜κ°€ μžˆλ‹€λ©΄ 정적 ν•„λ“œλ₯Ό μ΄μš©ν•˜λ©΄ ..

    31. ꡬ쑰체, λ³€κ²½ λΆˆκ°€λŠ₯ ꡬ쑰체(readonly struct)

    C# 볡합 데이터 ν˜•μ‹μ—λŠ” 클래슀 말고도 κ΅¬μ‘°μ²΄λΌλŠ” 것이 μžˆλ‹€. κ΅¬μ‘°μ²΄λŠ” 클래슀의 μ‚¬μ΄Œμ§€κ°„μ―€ 되기 λ•Œλ¬Έμ— ν•„λ“œμ™€ λ©”μ†Œλ“œλ₯Ό κ°€μ§ˆ 수 μžˆλŠ” λ“± 상당 λΆ€λΆ„ λΉ„μŠ·ν•˜λ‹€. struct ꡬ쑰체이름 { //ν•„λ“œ //ꡬ쑰체 } ꡬ쑰체λ₯Ό μ„ μ–Έν•˜λŠ” 예 struct MyStruct { public int MyField1 public int MtField2 public void MyMethod() { //... } } ꡬ쑰체의 ν•„λ“œλ₯Ό public으둜 μ„ μ–Έν–ˆλ‹€. ν΄λž˜μŠ€μ—μ„œλŠ” μ€λ‹‰μ„±λ•Œλ¬Έμ— λͺ¨λ“  ν•„λ“œλ₯Ό λ°˜λ“œμ‹œ private둜 μž‘μ„±ν•˜μ˜€λ‹€. λ¬Έλ²•μ μœΌλ‘œλŠ” ꡬ쑰체가 ν΄λž˜μŠ€μ™€ μœ μ‚¬ν•˜κΈ°λŠ” 해도, 쑴재 μ΄μœ κ°€ λ‹€λ₯΄λ‹€. ν΄λž˜μŠ€λŠ” μ‹€μ„Έκ³„μ˜ 객체λ₯Ό μΆ”μƒν™”ν•˜λ €λŠ”λ° κ·Έ 쑴재의 μ΄μœ κ°€ μžˆμ§€λ§Œ κ΅¬μ‘°μ²΄λŠ” 데이터λ₯Ό λ‹΄κΈ° μœ„ν•œ 자료ꡬ쑰둜 μ‚¬μš©λœλ‹€. (λ”°λΌμ„œ ꡳ이..