클래스(5)
-
단일 책임 원칙, 하나의 객체는 하나의 책임을 갖는다.
SOLID 원칙 중 'S' 하나의 객체가 하나의 책임만 져야한다! → 클래스를 단 한 가지의 목표만 가지고 작성해야 한다는 것을 의미한다. 애플리케이션 전반에서 높은 유지보수성과 가시성 제어 기능을 유지하는 원칙이다. 만약 클래스 하나가 여러 개의 목표를 가지고 있는 경우에는? 단일 책임 원칙을 따르지 않는 경우 직사각형 면적을 구하고 단위를 변환하는 문제를 다음과 같은 클래스에서 구현할 수 있다. package SingleResponsePrinciple; public class RectangleAreaCalculator { private static final double INCH_TERM = 0.0254d; private final int width; private final int height; p..
2023.03.14 -
자바(2), 객체 지향 프로그래밍
이번 포스팅 역시 자바와 C++과의 객체 지향 프로그래밍 중 차이점을 위주로 내용을 작성해보고자 한다. 자바는 C++과 유사한 면이 많기에 차이점을 위주로 학습하면 더욱 기억에 잘 남을 것이라 생각한다. 1. 객체 사용 1) 객체 지향 프로그래밍 객체 지향 프로그래밍의 핵심 원칙 중 하나는 캡슐화이다. 이는 모든 객체지향 프로그래밍이 동일하게 적용되는 원칙으로, 다른 사람이 구현한 객체의 메서드를 호출할 때는 내부에서 무슨 일이 일어나는지 몰라도 된다는 원칙이다. 자바에서는 클래스를 사용해 객체를 생성하고 사용할 수 있다. 2) 접근자 메서드와 변경자 메서드 메서드에서 데이터를 수정하는 방법은 두 가지 방법이 있다. 첫번째 방법은 멤버 함수로 전달받은 객체의 상태를 변경하고 아무 것도 반환하지 않는 방식..
2022.08.29 -
우아한 테코톡(7), 상속과 조합
본 포스팅은 우아한Tech의 테코톡 클레이님의 상속과 조합 영상을 정리한 내용입니다. 상속과 조합의 특징 및 문제점을 위주로 정리했습니다. 상속과 조합 1. 상속의 문제 1) 상속이란? 기존에 정의되어있는 클래스의 필드, 메소드를 물려받아 새로운 클래스를 생성하는 기법 2) 상속의 장점 (1) 중복 코드를 제거하고 기능 확장을 쉽게 할 수 있다. (2) 클래스들의 계층적인 구조를 만들 수 있다. 3) 상속의 문제점 (1) 하위 클래스가 상위 클래스의 구현에 의존하기 때문에 상위 클래스가 변경될 경우 취약하다. 즉, 상속은 부모 클래스와 강하게 의존하고, 부모 클래스의 캡슐화를 해치며 결합도가 높아진다는 단점이 있다. 따라서 부모 클래스의 구현을 변경하면 많은 자식 클래스를 모두 변경해야하는 상황이 발생할..
2022.08.18 -
자료구조 (3) 데이터 디자인과 구현
Data design and Implementation 1. 데이터 디자인 1) 자료의 추상화 - 자료의 구현에서 자료 형식의 논리적인 특징을 분리하는 방법 - Logical properties: 흐름도가 만들어져있고, 흐름도를 코드와 유사한 형태로 표현 - Implementation: 실제 코드를 구현하는 부분 2) 자료의 캡슐화 - 의사코드로 작성이 되어있는 부분을 문법적으로 채워넣는 것 - 논리 레벨에서 데이터를 사용하는 것으로부터 데이터의 표현을 분리하는 행위 - 코드 작성은 사람이 사용하는 언어와 가까운 형태로 기술을 하면 내부적으로는 컴퓨터가 다룰 수 있는 언어로 바뀌게 된다. 따라서 코드를 작성하는 우리는 컴퓨터가 어떤 식으로 저장되어있는지를 모두 알 필요는 없다. 이는 캡슐화덕분이다. - ..
2022.03.17 -
자료구조 (2) 소프트웨어 공학 원리
소프트웨어 공학 원리 1. S/W revolution 1) 프로그래밍 초기 단계 - 프로그래밍은 단순한 문제 해결만 가능하고 적은 수의 프로그래머밖에 없었다. 또한 컴퓨터의 큰 비용 문제가 있었다. - 프로그램의 목적은 문제 해결을 위한 방법 및 행위에만 초점을 맞췄다. - 군사용으로 등장했다. 또한 컴퓨터가 과학자들보다 몸값이 높았다. 이에 따라 컴파일 과정을 수작업으로 진행했다. 2) 프로그래밍 과도기 - 프로그래밍은 보다 큰 문제 해결을 위한 것에 목적이 있었지만 역시나 문제 해결을 위한 방법에 초점을 맞췄다. - 타이트한 데드라인에 맞춰 개발 - 대표적인 언어가 c언어임 3) 프로그래밍 현재 - 프로그래밍은 아주 큰 문제 해결에 초점을 맞추고 문제 해결 방법보단 데이터가 더 중요하다. - 항상 가..
2022.03.17