전체 글196 객체에 관한 고민 - 책임과 기능은 어디까지인가. 얼마 전, 디스코드에서 사용하는 별명을 바꿔야 할 일이 있었다. 바꿀 별명을 설정하고 저장 버튼을 누르지 않고 설정 창을 닫으려 하니 시스템에서 '저장되지 않은 변경사항이 있습니다.' 라는 메세지를 보냈다. '아, 내가 저장 버튼을 안 눌렀구나.'별생각 없이 저장 버튼을 눌러 바뀐 별명으로 설정을 변경하고 디스코드를 이용하던 중에 이런 생각이 문득 들었다. 별명을 변경하는건, 내가 하는 일이 맞나? 나는 바꿀 별명을 설정했는데 왜 시스템이 그걸 저장 안 했다고 뭐라 그러는 거지? 생각이 '그러면 이 시스템 내에서 나를 어떻게 생각하길래 이렇게 간섭하는 거지?'로 이어지고 나니, 결과적으로는 '그렇다면 이 디스코드라는 프로그램 안에서 나라는 사람은 어떤 기능과 역할을 하고, 어떤 책임을 가지고 있는 거야?.. 2023. 2. 25. 생성자 오버로딩에 관한 고찰 오늘 생성자 오버로딩을 배우면서 여러 사람들과 이야기를 나누고, 내 스스로 생각을 좀 해보면서 '도대체 생성자 오버로딩을 왜 사용할까?' 에 대한 고민을 해봤다. 사실 앞서 QnA 과정이 끝나고는 여전히 '그래서 왜 쓰는건데' 에 대한 명쾌한 해답을 얻지는 못 했다. 머릿 속에 들어온 정보들이 좀 두루뭉술하게 떠다니는 느낌이었다. 부트캠프 멤버분들 뿐만 아니라 지인에게도 물어봤다. 아니 필드 멤버에 값을 안넣고 그냥 초기화 된 데이터만 가지고 있는데 그게 불완전한게 아니라고? 그럼 해당 객체에 있는 0, null 같은 놈들은 어떻게 되는거지? 그러니까 나는, 필드 멤버로 존재하는 멤버변수들은 '반드시 그 값을 채워줘야'한다는 생각이 있었다. 그런데 해당 변수들에 대한 정보가 가변적으로 존재한다고 생각했고.. 2023. 2. 24. Q : 생성자 오버로딩 vs setter 활용. 어느 것이 더 효율적일까요? QnA 카테고리에는 학습 중 궁금했던 내용을 질문하고 그에 대해 오갔던 이야기와 당시에 들었던 생각들을 담습니다. 이야기 이후의 고민 과정은 해당 링크에서 확인하실 수 있습니다. ME 생성자 오버로딩과 this()메서드에 대해서 공부하다보니, setter와 용도에서 큰 차이가 있나 싶은 의문이 생깁니다. 물론 기능을 지원한다는 것은 어딘가 쓸모가 있으니까 지원하는 것이겠지만, 어느 부분에서 this()메서드, 생성자 오버로딩이 필요할지 아직은 가늠이 잘 안되네요. 불완전한 객체라면 불완전한 생성자를 통해 인스턴스를 만들고 setter를 활용하면 되지 않나 싶어서요. 예를 들어, 공연장의 좌석이라는 객체가 있다면, 좌석 번호와 좌석에 앉을 사람 데이터가 필요할겁니다. 좌석의 번호는 객체 인스턴스를 생성하는.. 2023. 2. 24. 05. 엔티티 식별자 생성 방식 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * 식별자 생성 방식 직접 할당 방식 식별 칼럼 방식 시퀀스 사용 방식 테이블 사용 방식 * 직적 생성 방식 - @Id 설정 대상에 직접 값 설정 이메일, 주문 번호 등 사용자가 입력한 값이나 규칙에 따라 식별자를 생성할 때 해당 방식을 사용한다. 저장하기 전에, 보통은 생성 시점에 생성자를 통해 전달한다. Hotel 클래스에서 확인할 수 있다. Hotel 객체를 생성하는 시점에 생성자를 통해 Hotel의 id를 전달하고 persist를 진행한다. * 식별 칼럼 방식 - DB 식별 칼럼에 매핑 MySQL의 자동 증가 칼럼과 같은 DB가 식별자를 자동으로 생성하는 칼럼에 매핑할 때 사용한다. DB가 식.. 2023. 2. 23. Section 1 - Unit 5 : [Java] 객체지향 프로그래밍 기초 Review Review 에서는 학습한 내용을 다시금 기록합니다. Unit Review는 학습한 내용 중 기존에 알고 있었지만 정확하게 이해하지 못하던 정보와 새롭게 알게된 정보를 기록합니다. 추가적인 설명을 요하는 부분은 댓글로 남겨주세요. Section Review는 전반적인 Section을 되돌아보고 학습했던 시간과 과정, 내용을 총괄하여 기록합니다. 필드와 메서드 * 필드 - 필드 필드는 '클래스에 포함된 변수'로 객체의 속성을 정의할 때 사용한다. 자바에서의 변수는 크게 클래스 변수, 인스턴스 변수, 지역 변수로 나뉜다. 필드에는 클래스 변수와 인스턴스 변수가 포함되며 이들은 static 키워드의 유무로 구분한다 정적 변수를 클래스 변수, 그렇지 않은 변수를 인스턴스 변수로 구분한다. 클래스 변수는 한 클래.. 2023. 2. 23. 04. 엔티티 매핑 설정 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * 엔티티 매핑 - 기본 애노테이션 @Entity : 엔티티 클래스에 설정한다, 필수로 사용해야한다. @Table : 매핑할 테이블을 지정한다. @Id : 식별자와 매핑하기 위해 사용한다. 필수로 사용해야한다. @Column : 매핑할 칼럼명을 지정하기 위해 사용한다. 지정하지 않으면 필드명 / 프로퍼티명을 사용한다 @Enumerated : enum타입을 매핑할 때 사용한다. @Temporal : java.util.Date, java.util.Calender를 매핑할 때 사용한다. 자바8 시간 / 날짜 타입 등장 이후 거의 쓰지 않는다. @Basic : 기본 지원 타입을 매핑하기 위해 사용한다. 생략.. 2023. 2. 22. 이전 1 ··· 25 26 27 28 29 30 31 ··· 33 다음 반응형