객체지향(12)
-
c# property
property는 클래스 내의 멤버 변수를 정보 은닉할때 사용된다. getter, setter를 통해 해당 변수를 읽고 쓸수 있으며 읽기 전용과 쓰기 전용으로도 만들 수 있다. C# 기본형 프로퍼티 class Class1 { private int c1; public int C1 { get { return C1; } set { C1 = value; } } } 이와 같이 c1에 직접 접근하지 않고 get set을 이용하여 접근하는 방식이다. 하지만 이러한 변수를 많이 만들게 되면 코드도 길어지고 보기 불편하기 때문에 C# 3.0 버전부터는 자동 구현 프로퍼티 기능을 제공한다. C# 자동 구현 프로퍼티 class Class1 { public int c1 { get; set; } } 이와 같이 뒤에 get se..
2021.01.12 -
객체 지향 프로그래밍과 함수형 프로그래밍
객체 지향 프로그래밍 (Object Oriented Programming) 줄여서 OOP라고 주로 부르며 크게 4가지 특징을 가지고 있다. 1. 캡슐화(Encapsulation)캡슐화는 데이터, 그리고 데이터를 처리하는 함수를 하나로 묶은것을 말합니다.캡슐화된 객체들은 재사용이 가능하며, 세부 내용이 은폐(정보 은닉)되어 오류가 적습니다.덕분에 인터페이스가 단순해지고, 객체간의 결합도가 낮아집니다. 2. 정보은닉(Information Hiding)다른 객체에게 자신의 정보를 숨기고 공개된 명령만을 통하여 접근을 허용하는 방식입니다.외부 객체가 특정 객체의 데이터와 함수를 직접 접근하지 않기 때문에 유지보수를 하거나소프트웨어를 확장할 때 오류를 줄일 수 있습니다. 3. 추상화(Abstraction)불필요한..
2020.11.23 -
객체 지향 소프트웨어
객체 지향 객체라는 중심 개념을 도입하여 프로그램을 개발하는 것으로 클래스에 대한 개념을 처음 도입했다. 구성요소 : 객체, 속성, 메소드, 클래스, 메세지, 클래스, 인스턴스 객체 지향의 기본 원칙 추상화 : 시스템에서 가장 중요한 부분을 정확하고, 간단하게 표현하는 것으로 다른 객체와 구분되는 속성이다. 캡슐화 : 객체를 이용하여 서로 관련 있는 데이터들을 하나의 단위로 묶는 기법이다. 정보 은폐 : 고려되지 않은 영향을 최소화 하는것으로, 자신의 연산만을 통하여 접근을 허용한다. 상속성 : 상위 클래스의 메소드와 속성을 하위 클래스가 물려받는 것이다. 객체 지향 분석의 개발 방법 객체 지향 분석 모델링 구성 요소인 클래스, 객체, 속성 등을 이용하여 문제를 모형화 시킨다. 객체를 인스턴스화 하여 식..
2020.10.15 -
[C#] overriding 오버라이딩 / 메서드 숨기기 (hold)
시험기간때문에 바뻤다가 오랜만에 c#을 공부하게 되었다. 평소에 많이 들었던 오버라이딩을 공부했다. 오버라이딩을 하기 위해서는 메소드가 virtual 로 선언해 놔야하며, 상속된 클래스에서 그 메소드를 재정의 해줍니다. 메소드를 재정의 하고 있음을 알리기 위해 override라는 키워드로 메소드를 정의해줍니다. amor라는 부모 클래스. virtual키워드 함수 initialize를 생성합니다. 그 밑에 자식 클래스 ironman과 warmachine을 생성, 안에 override initialize각각 선언후 출력을 다르게 해놓습니다. 첫번째는 amor에서 메서드를 호출시켰으므로 Armored가 뜨고, 두번째는 amor 의 ironman에다가 ironman클래스로 선언을 해서 override를 거쳐 r..
2019.04.14 -
[C#] 클래스 : 정적필드, 얕은 복사와 깊은 복사, this 키워드
1. 정적 필드 프로그램 전체에 걸쳐 공유해야 하는 변수를 사용할때 정적 필드 안에 생성하면 전체에 공유를 할 수 있다. 이와 같이 Global이라는 정적 필드에 public static int count 라는 변수를 선언하면 프로그램 전체에 공유 할 수 있습니다 변수 뿐만 아니라 메소드도 공유할 수 있으며, 정적 메소드라고 불립니다. 인스턴스가 아닌 클래스 자체에 소속되고 정적 메소드가 클래스의 인스턴스를 생성하지 않아도 호출이 가능합니다. 2. 객체 복사 (얕은 복사와 깊은 복사) 얕은 복사 바로 코드를 보도록 합시다. 먼저 객체 source 선언, source의 field1,2에 10,20을 대입합니다. target객체를 만들고 sourve를 대입 후, target field2에 30을 대입합니다...
2019.04.01 -
[C#] 클래스 : 생성자, 소멸자
1. 생성자 클래스를 선언할 때 명시적으로 생성자를 구현하지 않아도 컴파일러에서 만들어 주는 것으로, 객체의 필드를 원하는 값으로 초기화 할때 주로 쓰는 메소드입니다. 오버로딩이 가능하여, 다양한 버전의 생성자가 가능합니다. 2. 소멸자 생성자의 이름은 클래스의 이름과 같지만, 클래스의 이름에 ~를 붙인 꼴을 한 소멸자는 생성자와는 달리 매개 변수도 없고, 한정자도 사용하지 않습니다. 또한 오버로딩도 불가능하며, 호출도 불가능 합니다. 종료자는 가급적으로 구현하지 않는게 좋은데, 그 이유는 CLR의 가비지 컬렉터가 우리보다 더 똑똑하게 객체의 소멸을 담당해주고있기 때문에 뒷처리는 가비지 컬렉터에 맡기는 편이 좋습니다.
2019.03.31