전체 글(154)
-
C# - 시작
C# 이란마이크로소프트(Microsoft)가 개발한 객체 지향 프로그래밍 언어로 Java와 문법 구조가 유사하며, .NET 플랫폼 위에서 동작한다.C#은 Windows 앱, 웹, 게임(Unity), 서버 등 다양한 영역에서 사용된다. .NET 플랫 폼이란.NET은 C#을 실행할 수 있는 런타임과 라이브러리 생태계를 포함한 프레임워크이자 플랫폼이다..NET 플랫폼은 아래와 같은 분류로 나눌 수 있다. 1. .NET Framework윈도우 전용 프레임 워크로 WinForms, WPF등 데스크탑 UI 중심의 프레임 워크이다. 2. .NET Core 윈도우, 리눅스, 맥OS등에서 동작하는 크로스 플랫폼 런타입으로 빠르고 모듈화되는게 특징이다. 3. .NET 5+.NET Core의 후속 통합 플랫폼으로 지금은 그..
2025.06.09 -
Part2::Ch 03. 상속 - 06. 다중 상속
다중 상속도 이전에 배웠던 private, protected 상속과 같이 조심해서 사용해야하는 상속 중 하나이다. 먼저 부모 클래스가 될 클래스를 두개 정의해보자.그리고 이걸 상속 받을 자식 클래스를 만들어주고이제 두 부모 클래스를 한번에 상속 해주자. 한번에 상속하는 방법은 그냥 ,(쉼표)를 기준으로 두개의 부모클래스를 작성해주면 된다. 이렇게 되면 두 부모의 모든걸 받아오게 될 것이다. 그럴때 한번 몇가지 확인해볼 것이 있는데 먼저 두개의 부모가 서로 같은 명칭의 멤버를 가지는 경우이다.이 경우에는 서로 부모가 이름을 가리게 된다. 이전에는 상속받은 자식이 부모의 이름을 가리는 경우였는데 이번엔 부모끼리 이름을 가리는 경우가 생기는 것이다.이렇게 되면 사용 할때 이렇게 모호하다고 알려준다.어떤걸 써야..
2025.05.10 -
Part2::Ch 03. 상속 - 05. private, protected 상속
먼저 private와 protected 상속은 사용하는데가 많지 않기에 사용할때에는 많은 고민을 하고 사용하는것이 좋다. 먼저 사용 예제를 보기전에 관계에 대해서 알아보자.객체들 간의 관계를 말할때 기본적으로 is-a 관계와 has-a 관계가 있다.이 관계는 클래스 설계 시 상속(inheritance)과 포함(composition)을 어떻게 사용할지를 판단하는 객체 간의 관계 모델링 개념이다 1. is-a 관계 (상속, inheritance) A는 B이다. → A is a B 로 상속 관계로 표현된다.그 의미는 자식 클래스가 부모 클래스의 일종이다라는 관계로 공통 동작을 물려받기 위해 사용한다.class Animal {public: void breathe() {}};class Dog : public..
2025.05.10 -
Part2::Ch 03. 상속 - 04. 추상 클래스, 순수 가상 함수
1. 추상클래스(Abstract Class) 추상 클래스(Abstract Class)란 하나 이상의 순수 가상 함수(pure virtual function)를 포함하는 클래스로 직접 객체를 생성할 수 없는 클래스다.주로 공통 인터페이스를 정의하고 이를 상속받는 하위 클래스가 구체적인 동작을 구현하도록 강제하기 위해 사용한다 2. 순수 가상함수(pure virtual function) 순수 가상 함수(pure virtual function)란 자식 클래스에서 반드시 재정의(override)해야 하는 가상 함수로 구현 없이 선언만 되어 있는 함수이다.순수 가상함수는 함수의 본체(body)가 없고, = 0으로 표시된다 1) 순수 가상함수의 문법virtual 반환형 함수이름(매개변수) = 0;=========..
2025.05.04 -
Part2::Ch 03. 상속 - 03. 정적 결합, 동적 결합
1. 정적 결합(Static Binding)정적이라는 부분은 대부분 컴파일 타입이라는 개념이랑 연결되는 경우가 많다.정적 결합은 컴파일 타임(compile-time)에 함수 호출이나 멤버 접근이 어떤 코드와 연결될지 확정되는 방식으로 컴파일러가 함수 호출 대상을 미리 안다라는 개념하에 발생한 결합니다.이는 실행 도중(런타임)이 아니라, 컴파일 단계에서 어떤 함수나 멤버가 호출될지 결정되며 대표적으로는 오버로딩이 정적 결합이며 추가로 대부분의 일반 함수 호출, 연산자 오버로딩, 템플릿 등은 정적 결합이다. 2. 정적 결합을 코드로상속관계에 있는 클래스를 두개 선언해주고부모 클래스에 멤버 변수를 하나 선언해주고간단한 연산자 오버로딩 함수, 전역함수로 반환 타입이 Parent이고 매개변수를 const Pare..
2025.05.04 -
Part2::Ch 03. 상속 - 02. 가상 함수
1. 가상 함수란부모 클래스에서 정의한 함수가, 자식 클래스에서 재정의(override) 될 수 있도록 하는 함수로 virtual 이라는 키워드를 사용해서 생성한다. 먼저 부모 자식 클래스를 한번 생성해주자. 먼저 부모와 자식에 동일한 함수를 생성했을 때 메인 함수에서 각각의 객체를 생성해서 각각의 func를 호출해보면각각의 함수를 호출하는 것을 알 수 있는데 이번엔 업케스팅을 한번 해보고 나서 func 함수를 호출하도록 해보면부모 클래스의 func 함수를 호출하는 것을 알 수 있다. 원래 업케스팅을 한 이유는 부모 객체를 사용해서 자식 객체의 기능을 사용하는 기 위함인데 업케스팅을 했는데도 불구하고 부모 객체의 함수를 호출하는 것은 바라는가 아니다. 이런 상황에서 사용하는 것이 virtual 이라는 키..
2025.05.04