λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
728x90

πŸ–₯️/C#49

[C#] ν”„λ‘œνΌν‹° μžλ°”μ—μ„œ 클래슀의 멀버 λ³€μˆ˜μ— μ ‘κ·Ό(값을 getν•˜κ±°λ‚˜ setν•  λ•Œ)ν•  λ•Œ getter와 setterλ₯Ό λ§Œλ“ λ‹€. μ΄λ ‡κ²Œ ν•˜λŠ” μ΄μœ λŠ” 데이터 은닉성과 μΊ‘μŠν™”λ₯Ό μœ„ν•΄μ„œμ΄λ‹€. 일반적으둜 public λ©”μ„œλ“œ μ•ˆμ— private ν•„λ“œκ°€ μ„ μ–Έλœλ‹€. public class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } ν”„λ‘œνΌν‹° C#μ—μ„œλ„ λ™μΌν•˜κ²Œ getter와 setter λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•  수 μžˆλ‹€. ν•˜μ§€λ§Œ C#μ—μ„œλŠ” ν”„λ‘œνΌν‹°λΌλŠ” 것을 μ œκ³΅ν•œλ‹€. ν”„λ‘œνΌν‹°λ„ ν”„λ‘œνΌν‹°λŠ” λ©”μ„œλ“œκ°€ μ•„λ‹ˆλΌ ν•„λ“œμ™€ 같은 ν˜•νƒœλ‘œ μ‚¬μš©λ˜λ©°, λ‚΄λΆ€μ μœΌλ‘œ μžλ™ μƒμ„±λœ ge.. 2023. 8. 18.
[이것이 C#이닀] Chapter08: μ—°μŠ΅λ¬Έμ œ .1. μΈν„°νŽ˜μ΄μŠ€μ™€ 클래슀의 λ‹€λ₯Έ 점은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? μΈν„°νŽ˜μ΄μŠ€λŠ” λ©”μ„œλ“œ μ‹œκ·Έλ‹ˆμ²˜λ§Œ μ •μ˜ν•˜κ³ , κ΅¬ν˜„μ„ ν•˜μ§€ μ•ŠλŠ”λ‹€. => 계약을 μ •μ˜ν•˜λŠ” λͺ©μ  ν΄λž˜μŠ€λŠ” λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•  μˆ˜λ„ μžˆλ‹€. => ꡬ체적인 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ” λͺ©μ  κ·Έ 외에도 μΈν„°νŽ˜μ΄μŠ€λŠ” ν΄λž˜μŠ€μ™€ 달리 닀쀑상속 κ°€λŠ₯ν•˜λ‹€λŠ” 점이 μžˆλ‹€. 2. μΈν„°νŽ˜μ΄μŠ€μ™€ 좔상 클래슀의 λ‹€λ₯Έ 점은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? μœ„μ—μ„œλ„ λ§ν–ˆλ“―μ΄, μΈν„°νŽ˜μ΄μŠ€λŠ” 기본적으둜 λ©”μ„œλ“œ μ‹œκ·Έλ‹ˆμ²˜λ§Œ μ •μ˜λ₯Ό ν•˜κ³ , κ΅¬ν˜„μ„ ν•˜μ§€ μ•ŠλŠ”λ‹€. 이λ₯Ό 좔상 λ©”μ„œλ“œλΌκ³  ν•˜λŠ”λ°, 좔상 ν΄λž˜μŠ€λŠ” 좔상 λ©”μ„œλ“œκ°€ ν•˜λ‚˜ μ΄μƒλ§Œ 있으면 λœλ‹€. 즉, 좔상 ν΄λž˜μŠ€λŠ” κ΅¬ν˜„λΆ€κ°€ μžˆλŠ” 일반 λ©”μ„œλ“œλ„ 포함할 수 μžˆλ‹€. 좔상 ν΄λž˜μŠ€λ„ 클래슀이기 λ•Œλ¬Έμ— μΈν„°νŽ˜μ΄μŠ€μ™€ 달리 닀쀑상속이 λΆˆκ°€λŠ₯ν•˜λ‹€. 2023. 8. 18.
[C#] μΈν„°νŽ˜μ΄μŠ€μ™€ μΆ”μƒν΄λž˜μŠ€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μƒμ†λ°›λŠ” 것과 클래슀λ₯Ό μƒμ†λ°›λŠ” κ²ƒμ˜ 차이점 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μƒμ†λ°›λŠ” 것 (Interface Inheritance) μΈν„°νŽ˜μ΄μŠ€λŠ” λ©”μ„œλ“œ μ‹œκ·Έλ‹ˆμ²˜(이름, λ§€κ°œλ³€μˆ˜, λ°˜ν™˜ κ°’)만 μ •μ˜ν•œλ‹€. ν΄λž˜μŠ€κ°€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μƒμ†λ°›μœΌλ©΄ ν•΄λ‹Ή ν΄λž˜μŠ€λŠ” μΈν„°νŽ˜μ΄μŠ€κ°€ μ •μ˜ν•œ λ©”μ„œλ“œλ“€μ„ λͺ¨λ‘ κ΅¬ν˜„ν•΄μ•Ό ν•œλ‹€. (ν•˜λ‚˜λΌλ„ κ΅¬ν˜„λ˜μ§€ μ•ŠμœΌλ©΄ 컴파일 μ—λŸ¬κ°€ λ‚œλ‹€.) 그리고 닀쀑상속이 κ°€λŠ₯ν•˜λ‹€. (μ‰Όν‘œ(,)둜 이어쓰면 λœλ‹€.) interface IShape { double CalculateArea(); } class Circle : IShape { double radius; public Circle(double r) { radius = r; } public double CalculateArea() { return Math.PI *.. 2023. 8. 18.
[이것이 C#이닀] Chapter07: μ—°μŠ΅λ¬Έμ œ 1. ν΄λž˜μŠ€μ™€ 객체, μΈμŠ€ν„΄μŠ€λŠ” μ„œλ‘œ μ–΄λ–€ 점이 λ‹€λ₯Έκ°€μš”? ν΄λž˜μŠ€λŠ” 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•œ 섀계도, κ°μ²΄λŠ” 클래슀λ₯Ό μ‹€μ²΄ν™”ν•œ κ²ƒμœΌλ‘œ μΈμŠ€ν„΄μŠ€μ˜ ν•œ μ’…λ₯˜μ΄λ‹€. 예) "μžλ™μ°¨"λΌλŠ” ν΄λž˜μŠ€κ°€ 있고, 이 ν΄λž˜μŠ€λŠ” μžλ™μ°¨μ˜ 속성(색상, λΈŒλžœλ“œ λ“±)κ³Ό λ™μž‘(가속, μ œλ™ λ“±)을 μ •μ˜ν•œλ‹€. 이 클래슀λ₯Ό 기반으둜 "블루 ν† μš”νƒ€ μžλ™μ°¨"와 "λ ˆλ“œ ν˜„λŒ€ μžλ™μ°¨"와 같은 객체λ₯Ό 생성할 수 μžˆλ‹€. μ΄λ ‡κ²Œ μƒμ„±λœ 객체듀은 클래슀의 μΈμŠ€ν„΄μŠ€μ΄λ©°, ν΄λž˜μŠ€μ— μ •μ˜λœ 속성과 λ™μž‘μ„ κ°€μ§€κ²Œ λœλ‹€. 2. λ‹€μŒ μ½”λ“œμ—μ„œ 였λ₯˜λ₯Ό μ°Ύκ³ , 였λ₯˜μ˜ 원인을 μ„€λͺ…ν•˜μ„Έμš”. class A { } class B: A { } class C { public static void Main() { A a = new A(); B b = new B(); A c = new.. 2023. 8. 17.
[C#] κΉŠμ€λ³΅μ‚¬ 얕은볡사, readonly, ꡬ쑰체, νŠœν”Œ κΉŠμ€ 볡사/얕은 볡사 얕은 볡사(Shallow Copy): λ™μΌν•œ λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό κ³ μœ ν•¨ -> 같이 변함 using System; class Program { static void Main() { int[] originalArray = { 1, 2, 3 }; int[] shallowCopyArray = (int[])originalArray.Clone(); shallowCopyArray[0] = 99; Console.WriteLine("Original Array: " + string.Join(", ", originalArray)); // 좜λ ₯: Original Array: 1, 2, 3 Console.WriteLine("Shallow Copy Array: " + string.Join(", ", shallow.. 2023. 8. 17.
[C#] λΆ„ν•  클래슀, ν™•μž₯ λ©”μ„œλ“œ λΆ„ν•  클래슀 (partial) ν•˜λ‚˜μ˜ 클래슀λ₯Ό μ•žμ— partial ν‚€μ›Œλ“œλ₯Ό λΆ™μ—¬μ„œ λ‚˜λˆ μ„œ κ΄€λ¦¬ν•˜λŠ” 것이닀. partial class MyClass { public void MethodPart1() { Console.WriteLine("Method from Part 1"); } } partial class MyClass { public void MethodPart2() { Console.WriteLine("Method from Part 2"); } } class Program { static void Main() { MyClass myClass = new MyClass(); myClass.MethodPart1(); // 좜λ ₯: "Method from Part 1" myClass.MethodPart2(); .. 2023. 8. 17.
[C#] 상속, λ‹€ν˜•μ„±, μ˜€λ²„λΌμ΄λ”© 상속: base ν‚€μ›Œλ“œ λΆ€λͺ¨ 클래슀의 μƒμ„±μžλ‚˜ 멀버에 μ ‘κ·Όν•  λ•Œ μ‚¬μš©ν•  수 μžˆλ‹€. class Parent { public void SomeMethod() { Console.WriteLine("Parent's method"); } } class Child : Parent { public void CallParentMethod() { base.SomeMethod(); // λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œ 호좜 } } μœ„ μ˜ˆμ‹œλŠ” baseκ°€ 없어도 잘 μž‘λ™ν•œλ‹€. (λΆ€λͺ¨ ν΄λž˜μŠ€λ‘œλΆ€ν„° μƒμ†λ°›μ•˜κΈ° λ•Œλ¬Έμ—) ν•˜μ§€λ§Œ 가독성을 μœ„ν•΄ baseλ₯Ό 뢙여주기도 ν•œλ‹€. λ§Œμ•½ μ˜€λ²„λΌμ΄λ”©μ„ ν•œλ‹€λ©΄ κΌ­ base ν‚€μ›Œλ“œλ‘œ λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œμ™€ νŒŒμƒ 클래슀의 λ©”μ„œλ“œλ₯Ό κ΅¬λΆ„ν•΄μ€˜μ•Ό ν•œλ‹€. class Parent { public virtual void .. 2023. 8. 17.
[이것이 C#이닀] Chapter06: μ—°μŠ΅λ¬Έμ œ 1. Square() λ©”μ†Œλ“œλ₯Ό κ΅¬ν˜„ν•΄ ν”„λ‘œκ·Έλž¨μ„ μ™„μ„±ν•˜μ„Έμš”. Square() ν•¨μˆ˜λŠ” λ§€κ°œλ³€μˆ˜λ₯Ό μ œκ³±ν•˜μ—¬ λ°˜ν™˜ν•©λ‹ˆλ‹€. using System; namespace Chapter06Practice class MainApp { static double Square(double x) { return x * x; } static void Main(string[] args) { Console.Write("수λ₯Ό μž…λ ₯ν•˜μ„Έμš”: "); string str = Console.ReadLine(); if (!double.TryParse(str, out double d) && !int.TryParse(str, out int i)) { Console.WriteLine("μ •μˆ˜ ν˜Ήμ€ μ‹€μˆ˜λ§Œ μž…λ ₯ν•΄μ£Όμ„Έμš”"); } else { double.. 2023. 8. 16.
728x90

"); wcs_do();