전체 글 51

객체 지향의 설계원칙 (OOP)

객체지향 설계 원칙이란?객체지향 프로그래밍(Object-Oriented Programming, OOP)은 소프트웨어를 보다 효율적으로 설계하고 유지보수할 수 있도록 돕는 패러다임이다. 하지만 개념을 단순 적용한다고 좋은 코드가 되는 것은 아니다. 이를 위해 몇 가지 중요한 설계 원칙들이 존재하며, 이를 따르면 확장 가능하고 유지보수가 쉬운 소프트웨어를 만들 수 있다.SOLID 원칙1) 단일 책임 원칙 (Single Responsibility Principle, SRP)잘못된 코드 예제:class ReportManager { public void generateReport() { // 보고서 생성 로직 } public void printReport() { // 보고..

CS 2025.03.04

직렬화와 역직렬화

직렬화(Serialization)란?직렬화란 Java객체를 바이트 스트림으로 변환하여 파일이나 네트워크를 통해 전송할 수 있도록 하는 과정. 객체를 저장하거나 다른 시스템으로 전송할 때 필요하다.역직렬화(Deserialization)란?역직렬화란 직렬화된 바이트 스트림을 다시 객체로 변환하는 과정이다. 즉, 저장된 데이터를 복원하는 역할을 한다.  직렬화가 왜 필요할까?데이터의 메모리 구조는 크게 2가지로 나뉜다 -> 값 형식 데이터(int, float, char 등등), 참조 형식 데이터(객체와 같은 참조 형식 변수)이 두 가지 데이터 중에서 디스크에 저장하거나 통신할 때는 값 형식의 데이터만 사용할 수 있다. 참조 형식 데이터는 실제 데이터 값이 아닌 힙에 할당되어 있는 메모리 번지 주소를 가지고 있..

CS 2025.03.04

오버로딩(Overloading)과 오버라이딩(Overriding)

객체지향 프로그래밍(OOP)에서 자주 등장하는 개념 중 하나가 오버로딩과 오버라이딩이다.두 개념은 이름이 비슷해서 헷갈리기 쉬운데 개념적으로 큰 차이가 있다. 이번에는 오버로딩과 오버라이딩의 차이를 명확하게 이해하는 시간을 가져보도록 하겠다. 오버로딩(Overloading)이란?오버로딩은 같은 이름의 메서드를 여러 개 정의할 수 있도록 하는 기능이다.단, 매개변수의 개수 또는 타입이 달라야한다. 즉, 같은 이름을 가진 메서드라도 전달하는 인자가 다르면 서로 다른 메서드로 취급된다는 소리이다. 오버로딩의 특징같은 클래스 내에서 메서드 이름을 동일하게 정의할 수 있다.매개변수의 개수, 타입, 순서가 다를 경우 허용된다.반환 타입은 오버로딩과 관계가 없다. class MathUtils { // 두 개의 ..

CS 2025.02.25