본문 바로가기
728x90

전체 글63

[OOP] 객체 지향 언어의 특징 4가지(캡슐화, 상속, 추상화, 다형성) 객체 지향 언어의 특징파이썬은 대표적인 객체 지향 언어이다.파이썬의 객체 참조라는 특징을 공부하다보니 자연스럽게 객체 지향 언어의 특징을 공부하게 되었다. 객체 지향 언어의 특징은 4가지가 있다.1. 캡슐화데이터와 알고리즘을 하나로 묶어 하나의 캡슐처럼 만드는 것, 이 때문에 외부에서 데이터와 코드의 형태를 알 수 없다.ex) 파이썬에서 라이브러리를 임포트하여 함수를 쓸 수 있어도, 라이브러리 안의 데이터나 코드가 어떻게 되어있는지, 함수의 소스코드가 어떤지 확인할 수 없는 것이 캡슐화라고 이해하면 될 것 같다.이 특징 때문에 캡슐화되지 않은 데이터와 코드는 사용하기 힘들다.2. 상속상위 클래스의 모든 것을 하위 클래스가 이어받는 특징ex) 이전 0주차에 배운 SSR에서 Jinja2 템플릿을 사용할 때,.. 2024. 11. 11.
[C#] const vs readonly const와 readonly는 C#에서 값을 변경할 수 없도록 하는 역할을 한다는 공통점이 있지만, 서로 다른 상황에서 사용된다.const(상수)컴파일 타임 상수이다. 즉, 컴파일 시 값이 결정된다.정적으로 할당되며(static의 성질을 갖고 있음) 클래스의 모든 인스턴스가 동일한 값을 공유한다.선언 시 반드시 값을 초기화해야 한다.const 변수는 컴파일 시 코드에 직접 삽입되어, code 영역에 저장된다.코드에서 참조될 때 마다 실제 값을 복사하여 사용하게 된다. 따라서 모든 인스턴스에서 같은 값을 가진다.내장 자료형에만 사용이 가능하다.따라서 사용자 정의 클래스로는 불가능하다.readonly(읽기 전용 필드)런타임 상수이다. 따라서 선언과 동시에 값을 지정하거나, 생성자에서 값을 할당할 수 있다.선.. 2024. 11. 9.
[C#] delegate와 event C#에서 delegate(대리자)와 event(이벤트)는 둘 다 메서드를 가리키고 실행할 수 있는 기능을 제공하는 요소지만, 사용 목적과 방식에 차이가 있다.delegatedelegate는 특정 메서드의 참조를 저장하고 호출할 수 있는 타입이다. C++에서 함수 포인터와 비슷한 개념이라 생각하면 된다.파라미터와 리턴 타입을 통해 정의하게 되며 이후 리턴, 파라미터 타입이 같은 메소드들과 호환되어 이 메소드들에 대한 참조를 가질 수 있게 된다.사용 예시 : 콜백(callback) 메커니즘을 구현하거나, 특정 시점에 실행할 작업 목록을 정의할 때 유용하다.콜백 메커니즘 : 특정 이벤트나 작업이 완료된 후 실행될 메서드를 미리 지정하는 방식/// 매개변수가 없는 delegatepublic delegate vo.. 2024. 11. 8.
[C#] .NET, 컴파일 과정, CLS, CTS, CIL, CLI, CLR, JIT 컴파일 C# 스크립트는 .NET 실행 환경에서 동작하게 되는데, 이 때 .NET이란 무엇이고 C# 스크립트가 실행되기까지 어떤 과정을 거치는지 정리하려 한다..NET Framework.NET Framework(이후 닷넷 또는 .NET)는 마이크로소프트에서 만든 소프트웨어 개발 및 실행 환경이다. 네트워크 작업과 인터페이스 등 많은 작업을 캡슐화하고, Windows 응용 프로그램을 개발하고 실행하는 데 필요한 라이브러리와 런타임 환경을 제공한다. 닷은 크게 두 가지 주요 구성 요소로 나눌 수 있다 :CLR(Common Languange Runtime) : 프로그램 실행 시 메모리 관리, 예외 처리, 가비지 걸렉션 등을 담당하는 런타임 환경이다.(일종의 가상 머신이라고 생각해도 된다.)BCL(Base Class L.. 2024. 11. 6.
[C#] 접근 제한자(public, private, protected, internal 등) 접근 제한자란, 클래스, 메서드, 속성 등에 대한 접근 권한을 사용하는 데 사용된다.public모든 외부 클래스에서 접근이 가능하다.private해당 클래스 내에서만 접근이 가능하다.외부에서 접근하면 안되는 내부 로직이나 데이터에 사용된다.protected해당 클래스와 상속받은 클래스에서만 접근이 가능하다.상속받은 클래스에서는 접근해야 하지만 외부에서는 접근하면 안될 때 사용된다.internal같은 어셈블리(프로젝트) 내에서는 public으로 작동하게 되지만, 다른 어셈블리(프로젝트)에서는 private으로 작동하게 되어 접근할 수 없게 된다.클래스 서두에서 접근 한정자를 생략한 것은 internal을 생략한 것이다. 즉 internal이 디폴트이다.protected internal같은 어셈블리(프로젝트.. 2024. 11. 6.
[C#] 깊은 복사 / 얕은 복사 (Deep Copy / Shallow Copy) 깊은 복사(Deep Copy)깊은 복사는 객체의 값을 완전히 새로운 메모리 공간에 복사하는 방식이다. 따라서 원본 객체과 복사된 객체가 독립적으로 존재하고, 어느 한 쪽에서 변경이 일어나도 다른 쪽에 영향을 미치지 않는다.예시public struct PersonStruct{ public string Name;}PersonStruct person1 = new PersonStruct { Name = "Tom" };PersonStruct person2 = person1; // 값 복사이므로 깊은 복사person2.Name = "Bob"; // 깊은 복사이므로 복사해온 객체에 대해 영향 XConsole.WriteLine(person1.Name); // 출력 : AliceConsole.WriteLine(perso.. 2024. 11. 6.
728x90