Develop
🚀 bitcamp TIL (21.08.17)
📌 36일차(2021-08-17,화) 자바 객체지향 문법(eomcs-java/com.eomcs.oop) ex11(c:Exam0310 ~ e): 중첩 클래스, 로컬 클래스 사용법 📌 알게 된 점 nested class , inner class, local class inner 객체는 바깥 객체의 주소를 가지고 있다. 바깥클래스명.this를 기억해라 인스턴스 메서드를 호출하려면 반드시 해당 클래스의 인스턴스 주소가 필요!! 인스턴스 멤버는 인스턴스 주소를 사용한다. this가 생략되어서 바로 호출하는 것 처럼 보인다. 인스턴스 메서드는 인스턴스 주소를 담고 있는 this 변수가 있다. 그래서 inner class 를 사용할 수 있다. X obj = this.new X(); 바깥 클래스의 인스턴스를 필요로 하..
🏺 객체를 사용한다는 건? (How to use)
📌 객체를 사용한다는 의미 객체지향 프로그래밍에서는 클래스와의 관계를 잘 파악하는 것이 무엇보다도 중요하다. ✔️ 객체를 만든다는 것을 꼭 인스턴스를 만드는 것이라는 생각을 하지말자. 이는 우리 일상생활에서 일어나는 상황과 같다. 손좀 봐야겠다 1. 손이 어떻게 생겼는지 봐야겠다. 2. 혼나다라는 뜻으로 그 놈 손 좀 봐야겠다는 의미 ✔️ 객체도 상황에 따라서 나뉘어진다. 인스턴스를 만든다. 클래스를 사용한다. 등등.. ✔️ 객체를 사용한다는 의미는 클래스를 사용함으로써 클래스와의 관계를 통해 메서드를 호출하겠다는 의미이며 즉 메서드 호출에 관한 내용이라고 생각하면 된다. 📌 Caller & Callee 프로그램을 짜다가 인터페이스를 만나게 되면, ✔️ 누가 호출자(caller)이고 누가 피호출자(cal..
🖍️ 자바 : About Interface Ⅰ
📌 인터페이스와 상속 중복 메서드가 오버로딩 규칙을 위반할 경우 다중 구현 불가 파라미터 타입,개수,순서가 다른 경우 같은 이름의 메서드를 중복 정의 할 수 있다. 파라미터명은 상관없다. 리턴타입도 상관없다. 📌 인터페이스와 추상클래스의 콜라보 Ⅰ interface ProtocolA { void rule1(); void rule2(); void rule3(); void rule4(); } // 추상클래스에서 인터페이스의 규칙을 모두 미리 구현해 둔다. // 물론 최소 상태로 구현한다. abstract class AbstractProtocolA implements ProtocolA { @Override public void rule1() {} @Override public void rule2() {} @O..
🚀 bitcamp TIL (21.08.13)
📌 35일차(2021-08-13,금) 자바 객체지향 문법(eomcs-java/com.eomcs.oop) ex09(i ~ j): 인터페이스 활용 ex11(a ~ c:Exam0240): 중첩 클래스 사용 📌 알게 된 점 - 인터페이스 vs 클래스 vs 추상클래스 추상메서드를 재정의 하는 것도 오버라이딩이다. 패키지에 직접 소속된 클래스 = Top Level Class 필드와 메서드 static import (클래스명 생략가능) 중첩클래스는 static을 적지 않는다. import static 으로 미리 스태틱 멤버의 패키지 정보를 알려주면, 마치 같은 클래스의 멤버인양 클래스 이름 없이 사용할 수 있다. 인스턴스 메서드를 호출할 때 인스턴스 주소가 메서드의 내장변수인 this에 저장된다. 바깥 클래스의 인스..
🚀 bitcamp TIL (21.08.12)
📌 알게 된 점 concrete => 인스턴스를 생성할 수 있는 일반 클래스 추상 클래스의 목적은 서브 클래스에게 공통 필드와 공통 메서드를 상속해주는 것이다. 인터페이스의 메서드 중에서 서브 클래스가 구현해야만 의미가 있는 메서드의 경우 추상 클래스에서 미리 구현할 필요가 없다. 인터페이스는 객체 사용 규칙을 정의 메서드를 통해 객체(클래스)를 사용 인터페이스를 바꾸게 되면 인터페이스를 구현한 기존 클래스에 영향을 끼친다. 인터페이스의 메서드를 변경하거나 제거, 추가하는 순간 이 인터페이스를 구현한 모든 클래스들에서 컴파일 오류가 발생하게 된다. 자기가 만든 인터페이스를 다른 개발자들이 그들 프로젝트에 사용하는 입장이라면? not 읽을 때 !this.use 사용 상태가 아니라면 이라고 읽는다. true..
📙 Template Method Pattern
📌 Template method pattern 템플릿 메소드 패턴(template method pattern)은 소프트웨어 공학에서 동작 상의 알고리즘의 프로그램 뼈대를 정의하는 행위 디자인 패턴이다. 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단계들을 다시 정의할 수 있게 해준다. (출처 : 위키백과) 추상클래스인데 대부분의 기능은 구현되있어 나머지 중요한 부분 템플릿으로 남겨둔다. 템플릿 메서드 패턴 = 상위클래스는 추상 클래스(기본흐름정의) 구현은 서브 클래스에게 맡긴다. 큰 흐름은 슈퍼클래스가 작은 흐름은 서브 클래스 추상 클래스 , 추상 메서드? >> 템플릿 메서드 생각하면 된다. 📌 추상클래스(abstract class)와 구현 클래스(concrete class) 추상클래스를 만든 개발자..
🚀 bitcamp TIL (21.08.11)
📌 33일차(2021-08-11,수) 자바 기본 클래스 사용법(eomcs-java/com.eomcs.basic) ex02: Wrapper, Date, Calendar 클래스 사용법 📌 알게 된 점 String 레퍼런스 = String 변수 (s 변수라고 한다) 클래스, 추상클래스, 인터페이스 퉁 쳐서 type이라고 부른다. primitive type은 다형적 변수로 활용할 수 없다. 함께 묶을 수 없다. primitive type를 Object 레퍼런스에 담기 위해서 등장한 wrapper 클래스 유사한 일을 하는데 객체 사용법이 다르다면 쓰기가 매우 불편하다. 유사한 일을 하는 객체에 대해 사용법을 통일하자. (메서드 이름을 통일하자) 객체를 사용한다 = 문맥에 따라 달라져야함 객체 사용을 통일한다 = ..
🖨️ Shallow Copy & Deep Copy
🖨️ Shallow copy & Deep copy learn about shallow copy ✔️ Object의 clone()은 해당 객체의 필드 값만 복제한다. ✔️ 그 인스턴스 변수가 가리키고 있는 객체는 복제하지 않는다. ✔️ 이런 방식의 복제를 "shallow copy(얕은 복제)"라 부른다. public class Exam0173 { static class Engine { int cc; int valve; public Engine(int cc, int valve) { this.cc = cc; this.valve = valve; } @Override public String toString() { return "Engine [cc=" + cc + ", valve=" + valve + "]"; }..