728x90 반응형 분류 전체보기281 C#] SOLID 원칙 4. Interface Segregation Principle(인터페이스 분리 원칙) 어떠한 고객에게도 사용하지 않는 함수에 의존하기를 강요할 수 없다. 기본적으로 ISP는 최소한의 필요한 구현만 하도록 코드작성을 줄여준다. 따라서 interfaces는 오직 필요한 declarations만 갖도록 만들어야 한다. 다른 declarations을 가지고 있는 interface는 더 작은 interfaces로 분리되어야 한다. Example 우리가 운전하기도 하고, 날수도 있는 탈것이 있다. public interface IVehicle { void Drive(); void Fly(); } 여러 기능이 있는 차를 개발하려고 한다. IVehicle 인터페이스를 사용하기 좋다. public class MultiFunctionalCar : IVehicle { public void Drive() { .. 2024. 2. 7. C#] Access Modifiers Access modifiers는 C# project에서 object와 object의 members의 접근성을 명시한다. encapsulation을 강화하고, 의도하지 않은 접근이나 변경으로부터 보호한다. 모든 C# types는 access modifiers를 갖는다. 명시되지 않은 경우 기본 access modifier가 지원된다. Access Modifiers Types private, public, protected, internal, 그리고 protected-internal, private-protected 와 같은 두 가지 조합이 있다. 각 access modifiers는 다른 수준의 접근성과 가시성을 제공하며, 우리는 이를 사용하여 object의 동작을 제어할 수 있다. Private Acces.. 2024. 2. 2. C#] Virtual VS Abstract 함수 차이점 OOP는 상속을 사용한다. 효율적이고 정돈되 코드를 위해 class의 공통 함수를 사용한다. 함수에 대해서 C#은 두가지 별도의 접근방식을 사용한다. virual 과 abstract methods이다. 둘다 polymorphism이 가능하지만, 구현과 사용방법은 상당히 다르다. Virtual vs. Abstract 대중교통 사무실을 만들어보자. 사용자는 Car, Train, Plane 중에 선택할 수 있고 이동시간과 기본요금을 알 수 있다. 사용자의 옵션에 따라 대중교통 object를 초기화하는 CreateTransportMode() 함수를 갖는 TransportAgency class를 만들어보자. public enum TransportModeType { Car, Plane, Train } interna.. 2024. 2. 2. C#] Value VS Reference Types C# data types 분류에 대해 살펴보자. value types과 reference types의 차이점도 살펴보자. C#은 strongly-typed 언어이다. 각 변수가 특정 type을 갖고 있고, 각 type은 value type 또는 reference type이 될 수 있다. Value Types 값 타입 변수는 데이터를 직접적으로 갖고 있고, System.ValueType으로부터 상속받은 struct keyword를 사용하여 지정된다. Numeric types bool, char types Date types 내장 값 타입을 제외하고, struct keyword를 사용해서 custom 값 타입을 정의할 수 있다. fields 또는 properties로 값 타입 또는 참조 타입을 가질 수 있다.. 2024. 2. 1. C#] Class Variable, Class Reference, Class Instance의 차이점 1. Variable of a Class : 초기화 되지 않은 class의 copy 2. Instance of a Class : new keyword를 사용하여 초기화된 class, 메모리를 갖고 있고 다른 instance와 메모리 공유하지 않는다. 3. Reference of a Class : 존재하는 instance를 사용하여 초기화된 class의 copy, memory 공간이 없으며, 동일한 instance의 메모리를 공유한다. Class란? 간단히 말해서, C#의 사용자 정의 타입이다. string을 data type이라고 하지만, string data type은 C#에 class로 만들어져있다. 미리 정의된 class 또는 사용자정의 class 모두 data types이다. 우리는 class를 .. 2024. 1. 31. C#] SOLID 원칙 3. Liskov Substitution Principle(리스코프 치환 원칙) Liskov Substitution Principle (LSP)은 child class는 parent class를 대체할 수 있어야 한다. 이 말은, 기능 변경 없이 상속받은 class는 base class를 대체할 수 있도록 만들어야 한다. 그렇지 않으면, application은 결국 오류가 날 수 있다. 명확한 이해를 위해, 합계 계산기 예를 사용해보자. Project 설정 수들을 갖는 array가 있고, array의 모든 수를 합하는 기본기능이 있다. 이제, 홀수 또는 짝수만 더하는 기능이 필요하다고 하자. 어떻게 구현할 수 있는가? public class SumCalculator { protected readonly int[] _numbers; public SumCalculator(int[] nu.. 2024. 1. 26. 이전 1 2 3 4 5 6 7 ··· 47 다음 728x90 반응형