전체 글

전체 글

    🚀 bitcamp TIL (21.08.10)

    📌 31일차(2021-08-09,월) 자바 객체지향 문법(eomcs-java/com.eomcs.oop) ex07: 추상 클래스와 추상 메서드 자바 기본 클래스 사용법(eomcs-java/com.eomcs.basic) ex01: Object 클래스 사용법 📌 알게 된 점 전길남박사 - 아시아 최초의 인터넷 망 팀 버너스 리 - tcp/ip 해시 값 = 원본 파일과 같은 파일인지 비교한다. object toString() equals() hashCode() getClass() clone() finalize() notify() notifyAll() wait() hashCode를 오버라이딩하면 인스턴스가 다르더라도 인스턴스 변수의 값이 같으면 같은 해시값으로 리턴된다. clone()의 제약조건 clone() 오..

    🌱 from 추상클래스 to 인터페이스

    from 추상클래스 to 인터페이스 1. 추상클래스 사용 전 두 개의 정렬 객체가 서로 다른 타입이기 때문에 정렬을 수행하고 출력할 메서드를 따로 따로 만들어야 한다. 클래스의 사용법도 달라서 불편하다. ✔️ BubbleSort 객체는 run()을 호출해야 하고, ✔️ QuickSort 객체는 start()를 호출해야 한다. display(s1, values); display(s2, values2); 2. 추상클래스 사용 전 : 상속 사용하기 // 정렬을 수행하는 클래스를 한 타입으로 묶기 위해 // 다음 클래스를 정의하였다. public class Sorter { public void sort(int[] values) {}; } ✔️ 정렬 객체를 사용하는 방법을 통일하면 사용하기가 쉬워진다. ✔️ 두 ..

    🚀 bitcamp TIL (21.08.09)

    📌 31일차(2021-08-09,월) 자바 객체지향 문법(eomcs-java/com.eomcs.oop) ex07: 추상 클래스와 추상 메서드 📌 알게 된 점 객체지향 분석 설계에서는 인스턴스 필드를 다루는 인스턴스 메서드를 연산자라고 한다. 추상화가 무너진다? > 적절하게 접근을 통제함으로서 해결 ex) 환자정보 - 키, 몸무게, 성별 등등 만약 키 몸무게가 무효한 값이라면 치명적이다. (추상화가 무너진다) 향후 변경가능성에 대해서 어떤 구조로 작성하는게 유지보수에 도움을 주는가? 가능한 최소한의 터치로 바꾸게끔 필드보다 메서드를 통한 변경이 유지보수가 좋다. lombok - 실무에서 쓴다. (게터 세터를 보다 더 간결하게 작성하기 위함) 만들어놓고 보니까 아 겹치네 수퍼클래스로 정의하자 추상클래스의 레..

    🔗 노드와 노드를 이어주는 연결리스트(LinkedList)

    🔗 연결리스트(Linked List) 연결리스트 = 주소 다루는 것을 연습하기 좋다. 📌 배열과 연결리스트의 차이 ✔️ 배열의 장점 인덱스로 요소들을 찾기 때문에 속도가 빠르다. ✔️ 배열의 단점 가비지가 늘어난다!(예시참고) 다음 예시는 배열의 길이가 꽉 찼을 때 기존 배열보다 50% 증가된 새로운 배열을 만들어 주소를 옮기는 방식을 코드로 나타내었다. [예시1] if (this.size == this.boards.length) { // 꽉 차면 새로 만든다. // 기존 배열보다 50% 더 큰 배열을 만든다. Board[] arr = new Board[this.boards.length + (this.boards.length >> 1)]; // 기존 배열의 값을 새 배열로 복사한다. for (int i ..

    🚀 bitcamp TIL (21.08.06)

    📌 30일차(2021-08-06,금) 실전 프로젝트(eomcs-java-project) 10-c. 리팩토링 : ArrayList를 직접 사용하기 10-d. 리팩토링 : LinkedList를 직접 사용하기 10-e. 리팩토링 : Generalization + 다형성 + 의존 객체 주입(Dependecy Injection) 10-f. 리팩토링 : 메서드 이동 10-g. 리팩토링 : 인터페이스 적용 📌 알게 된 점 객체지향의 핵심은 클래스 관계도이다. 구조를 바꾸는 이유?? 더 유지보수하기 쉽게 바꾸기 위하여 구조에 대한 정답은 없다 , 현재 상황에서 어느 방법이 더 유지보수하기 쉽냐를 판단 초보자들의 흔한 실수 : 메서드는 public 필드는 private 공개여부에 따라 달라진다. 특정 클래스 내부에서만 ..

    🚀 bitcamp TIL (21.08.05)

    📌 29일차(2021-08-05,목) 실전 프로젝트(eomcs-java-project) 10-a. 자료 구조 다루기 II : 데이터 처리 코드를 캡슐화 📌 알게 된 점들 캡슐화 - 복잡한 코드를 분리하여 메서드에 감춘다. (핵심) 복잡한 코드를 단순화시키자. 캡슐화의 이점 - 메서드를 이용하는 측에 영향을 주지 않으면서 기능의 구현을 변경할 수 있다. (핸드폰 기능들 내부 구조 몰라도 된다. 잘 동작해서 쓰기만 하면 된다.) 교체가 쉽고 유지보수가 쉽다. 사용자 UI 중심 클래스 / DAO 데이터 처리를 하는 클래스로 분리 (높은 응집도 : 한 클래스가 한 기능에 집중하게 만든다) 어떤 경우에 클래스를 합치는지 어떤 경우에 클래스를 분리해야하는지? 책임할당 소프트웨어 설계패턴 GRASP(객체지향 밑바닥 ..

    🚀 bitcamp TIL (21.08.03 ~ 21.08.04)

    📌 27일차(2021-08-03,화) 실전 프로젝트(eomcs-java-project) 08-b. Composite 디자인 패턴 : 적용 후(계속) 08-c. Composite 디자인 패턴 : 익명 클래스 활용 08-d. Composite 디자인 패턴 : 스태틱 멤버를 인스턴스 멤버로 전환 📌 알게 된 점 패턴 = 유사한 형태 이러이러한 내용으로 하니까 잘 되더라 클래스 상속관계 의존관계를 어떻게 설계할 것인가? 처음부터 제로베이스에서 시작하는거 아니다. 우리가 필요한것은 선배들의 경험을 내 것을 받아들이고 실무경험을 쌓고 우리만의 방법을 찾는 것이 순서다. 무조건 내가 처음부터 창시한다? nono 직접 접근하지말고 상속받은 슈퍼클래스의 타이틀을 호출하라 삭제 = 삭제는 보이드 대신 메뉴 객체를 준다. ..

    📝 클래스 다이어그램 (Class Diagram)

    클래스 다이어그램 ✔️ 시스템에서 사용되는 객체 타입을 정의한다. ✔️ 객체 지향 시스템 모델링에서 공통적으로 많이 쓰이는 다이어그램이다. 클래스 다이어그램의 관계 중 다음 5가지를 통해 알아보고자 한다. ✔️ 상속(inheritance) 슈퍼클래스와 서브클래스로 나누어 상속관계를 화살표로 표시한다. ✔️ 연관(association) 화살표로 연관관계를 나타낸다. ✔️ 집합(aggregation) 약한 결합을 나타내며 속이 빈 마름모로 표시한다. ✔️ 합성(composition) 강한 결합을 나타내며 속이 찬 마름모로 표시한다. ✔️ 의존(dependency) 일시적 관계를 표현할 때 사용하며 점선으로 표시한다. "위 5가지의 공통점은 전부 다 의존관계의 개념으로 볼 수 있습니다." 상속 연관 집합 합성..