프로그래밍7 객체지향적 프로그래밍의 장점 객체지향 프로그래밍 (OOP; Object-Oriented Programming)객체지향 프로그래밍(OOP; Object-Oriented Programming)은 데이터를 객체로 표현하고, 객체 간의 상호작용을 통해 프로그램을 구성하는 방식이다 OOP의 형태로 프로그래밍하면 다양한 장점이 있지만, 결국 핵심은 다음 두 가지로 정리할 수 있다 주요 장점확장성과 유연성 향상, 그리고 결합도 감소추상 클래스와 인터페이스 상속을 통해 한 번 작성한 코드를 여러 곳에서 재사용할 수 있으며 느슨한 결합을 구현할 수 있다. 이에따라 공통된 기능도 추상화되기 때문에 중복 코드 또한 감소시킬 수 있다// 공통된 기능을 추상화한 인터페이스interface Payment { void processPayment();}.. 2025. 3. 12. 프로그래밍의 추상화 추상화란?추상화는 복잡한 시스템에서 핵심적인 부분만을 남기고 불필요한 세부 사항을 숨기는 것이다 구체적으로 객체지향 프로그래밍 언어에서 인터페이스 혹은 추상 클래스를 통해 구현된다 예를 들어 Car라는 추상 클래스가 있다고 가정해보자테슬라와 현대차는 각기 다른 방식으로 핸들링을 구현하고, 가속 페달을 밟았을 때 속도를 높이는 원리도 다를 수 있다. 하지만 사용자는 이러한 내부 구현을 몰라도 된다중요한 것은 핸들을 돌리면 방향이 바뀌고, 가속 페달을 밟으면 차가 빨라지는 결과가 나온다는 것이다 추상화는 이처럼 행동과 결과만을 명확하게 정의하고, 내부 동작 방식은 숨김으로써 복잡성을 줄이는 개념이다 추상화의 장점추상화의 주요 장점은 다음과 같다 읽기 쉬워짐복잡한 구현을 감추고, 핵심적인 동작을 정의하는 인.. 2025. 3. 11. C#의 프로퍼티(Property)란? C#에서 프로퍼티란 객체의 필드 값을 읽거나 설정할 수 있는 메서드처럼 동작하는 멤버이며 변수처럼 사용할 수 있다 프로퍼티가 생긴 이유과거 C, C++에서는 필드에 직접 접근하는 것이 일반적이었으나, OOP에서는 캡슐화를 중요시한다. 즉, 필드는 직접 노출하면 안되며, 필요한 경우 메서드를 통해 접근해야 한다 하지만 그러면 매번 메서드를 선언하는 번거로움이 생기기 때문에 이 문제를 해결하기 위해 프로퍼티를 도입했다. 즉, 필드처럼 간단하게 접근할 수 있으면서도 캡슐화를 달성할 수 있게 된 것이다 코드 예시는 아래와 같다/* C */#include typedef struct { int age;} Person;// Getterint getAge(Person* p) { return p->age;}/.. 2025. 3. 10. C# 얕은 복사와 깊은 복사의 차이 C#에서 객체를 복사하는 방식은 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)로 나뉜다얕은 복사는 원본 객체의 참조만 복사하여 같은 객체를 공유하며, 깊은 복사는 원본 객체의 모든 데이터를 새로운 메모리에 복사하여 독립적인 객체를 생성한다 결론얕은 복사는 객체의 참조만 복사하여 원본과 복사본이 같은 데이터를 공유하므로, 한쪽을 변경하면 다른 쪽도 영향을 받는다반면, 깊은 복사는 완전히 새로운 객체를 생성하여 복사본을 독립적으로 유지하므로, 변경이 원본에 영향을 주지 않는다 Wikipedia - Object copying 2025. 3. 4. C# 값 타입과 참조 타입의 차이 C#의 값 타입과 참조 타입은 메모리에 데이터를 저장하는 방식과 저장된 데이터에 접근하는 방식이 다르다 메모리 저장 방식저장 방식의 차이로 인해 메모리 할당 속도, 기본 초기화 값 등의 차이가 발생한다 값 타입의 데이터는 일반적으로 스택 영역에 저장되고, 참조 타입의 필드로 사용될 경우 힙에 저장된다. 변수에 데이터가 그대로 저장된다using System;class Program{ static void Main() { int a = 10; // 값 타입 (스택에 저장됨) int b = a; // a의 값을 복사하여 b에 저장 (새로운 공간 할당) b = 20; // b만 변경, a에는 영향 없음 Console.WriteLine($.. 2025. 3. 4. C# 인터페이스와 추상클래스의 차이 C#에서 인터페이스와 추상 클래스의 차이는 다음과 같다 개념적 차이인터페이스인터페이스는 주로 이 객체는 어떤 동작을 할 수 있다 라는 동작(행동)의 집합을 정의한다 예를 들어 '저장할 수 있다', '로그를 남길 수 있다' 같은 식으로 해당 인터페이스를 상속받은 클래스가 갖춰야 할 기능의 틀만 제공하는 것이다using System;// 1. 인터페이스 정의public interface ILogger{ void Log(string message);}// 2. 인터페이스 구현 클래스public class FileLogger : ILogger{ public void Log(string message) { Console.WriteLine($"파일 로그 기록: {message}"); .. 2025. 3. 3. 이전 1 2 다음 반응형