본문 바로가기

분류 전체보기48

[객체지향의 사실과 오해] 3. 타입과 추상화 03 타입과 추상화 추상화를 통한 복잡성 극복 추상화는 복잡한 것을 이해하기 쉽게 단순화하는 것이다. 복잡성을 해결하기 위해 추상화는 두 차원에서 이뤄진다. 사물들 간의 공통점은 뽑고, 차이점은 버리기 (일반화하기) 중요한 부분을 강조하기 위해 불필요한 세부 사항은 제거하기 객체지향과 추상화 1. 이상한 나라의 트럼프 ex) 앨리스에 나오는 등장인물 중 트럼프 모습을 하고 있는 정원사, 병사들, 신하, 왕자와 공주 등이 있다. 이들 모두 객체이다. 2. 추상화하여 그룹화하기 정원사, 병사들, 신하, 왕자와 공주는 '트럼프'라는 공통점을 가지고 있으며, 이들 모두를 트럼프라는 개념으로 단순하게 바라볼 수 있다. 정원사, 병사들, 여왕이라는 차이점은 무시하고, 공통점만 취하여 모두 트럼프라는 그룹으로 묶는다.. 2023. 6. 16.
[ 객체지향의 사실과 오해 ] 2. 객체의 구성 (상태, 행동, 식별자) 02 이상한 나라의 객체 객체지향과 인지 능력 인간은 인지 능력을 이용해서 세상에 존재하는 다양한 객체를 식별하고 분류한다. 소프트웨어 세계에서도 마찬가지다. 소프트웨어 역시 인간이 쉽게 인지할 수 있도록 다양한 객체들로 이뤄져 있다. 객체, 그리고 이상한 나라 예시) 앨리스가 음료를 마시면 키가 작아지고, 케이크를 먹으면 커진다. 키가 작아지면 아름다운 정원에 갈 수 있는 문을 통과할 수 있다. 객체 : 앨리스, 음료 앨리스 객체의 상태 : 키, 위치 앨리스 객체의 행동 : 음료를 마신다, 케이크를 먹는다 위의 예시를 통해 알 수 있는 것 앨리스는 키라는 상태를 가지며, 상태는 변경 가능하다. 앨리스의 상태를 변경시키는 것은 음료를 마시는 앨리스의 행동이다. 행동의 결과는 상태에 의존적이다.(ex) 음.. 2023. 6. 9.
[ 객체지향의 사실과 오해 ] 1. 객체란 무엇인가 이 책을 통해 얻고자 하는 것 1. 객체지향을 바라보는 시야 넓히기 2. '객체지향이란 무엇인가'라는 질문에 나만의 견해를 가지고 답할 수 있기 1장 협력하는 공동체 객채지향의 오해 객체지향 프로그램에 대해 오해하는 것이 있다. 객체지향이란 '현실에 존재하는 사물을 최대한 유사하게 소프트웨어로 옮기는 것'이다 실제 소프트웨어 객체와 현실 세계의 사물 간에는 유사성이 없다. 하지만 현실 세계에 대한 비유로 객체지향 개념을 학습하는데 유용하므로 저 관점으로 바라볼 수 있다. 현실 세계에서 커피를 주문하고 제조하는 과정 이해를 위해 우선 현실 세계의 예시로 객체지향의 핵심 개념을 이해해보자. 카페에 가서 커피를 주문하고 제조하는 상황을 생각해보자. 이 상황에선 손님, 캐시어, 바리스타라는 3명의 사람이 있다... 2023. 6. 2.
[Spring] 생성자 주입, 순환 참조(circular reference) 문제 발생 공부하면서 테스트를 하다가 다음과 같은 에러를 만났다. Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'appConfig': Requested bean is currently in creation: Is there an unresolvable circular reference? 순환 참조에 관한 에러인데, 순환 참조가 발생하면 BeanCurrentlyInCreationException이 발생한다. 순환 참조가 무엇인지 왜 발생했는지 알아보자. 문제 발생 이유 순환 참조는 두 가지 조건이 부합하면 발생한다. 1. 빈 A와 빈 B가 둘 다 서로를 의존.. 2023. 4. 21.
[Spring] XML로 빈 등록하는 방법 스프링에서 설정 파일의 종류는 두 가지가 있다. java 파일과 xml 파일 자바 설정 파일과 XML 설정 파일의 작성법에 대해 알아보자. 예시> UserDao에 ConnectionMaker가 의존한다. public class UserDao { private ConnectionMaker connectionMaker; public void setConnectionMaker(ConnectionMaker connectionMaker) { this.connectionMaker = connectionMaker; } } public class DConnectionMaker implements ConnectionMaker { @Override public Connection getConnection(){...생략.... 2023. 4. 21.
[Spring] ObjectMapper Jackson에서 제공하는 ObjectMapper는 serialize(자바 객체를 JSON으로 변환) , deserialize(JSON을 자바 객체로 변환) 할 때 사용한다. 1. Jackson 라이브러리 종속성 추가한 후 사용 Maven> com.fasterxml.jackson.core jackson-databind 2.12.3 Gradle> // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.3' 2. Java Object -> JSON ObjectMapper mapper = new Objec.. 2023. 1. 17.