무엇을 배웠는가?!
느낀점
그래서 추천할만한 가치가 있어?!
대부분은? 캡슐화가 있었고 상속이 있었고 음.. 그리고 추상화였나?! 그 다음이 뭐였지?! 이런식으로 대답
그럼 어떻게 해야 쉽게 외울수 있을까?! -> 캡 상 추 다
아빠 춘향 = new 딸();
// 딸이 아빠 역할을 할 수 있을까?!... 괴이함...
동물 고래 = new 포유류 ();
원거리딜러 베인 = new 빛의베인(); // 빛의 베인은 원거리 딜러 역할을 한다.
동물 뽀로로 = new 펭귄(); // 펭귄을 낳으니 동물 역할을 하는 뽀로로라 이름 지었다.
즉 다시 말해서, 자바에서 상속이란 하위 클래스는 상위 클래스이다.
즉 자바 언어에서 상속(inheritance)라는 키워드는 존재하지 않음 대신 extends(확장)이 존재함. (제임스 고슬링이 정의)
피카소의 그림은 각 부분의 특징을 가장 잘 표현할 수 있도록 신체를 분해/ 결합해서 벽화를 그림.
추상화 : 여러 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용
객체 지향에선...?? 추상화는 모델링이다.
모델링은? 실제 사물을 복제하는 것이 아니라 목적에 맞게 관심 있는 특성만을 추출해서 표현하는 것
- ex) 지구본? - 지구를 모델링하고 있음
과학 박물관에 태양계
그럼 모델링이 객체지향에서 중요할까?!
정답은 매우 매우 중요함!
객체 지향에서 모델링은 클래스를 설계하거나 DB 테이블을 설계할때 반드시 필요한 기법
클래스 vs 인스턴스???
클래스와 인스턴스는 붕어빵과 붕어빵 틀이 아님...
ex) 붕어빵틀을 생산 - 금형기계 -> 클래스
금형기계 붕어빵틀 = new 금형기계();
그러면 금형기계에서 만든 붕어빵틀은 객체인가?!NO
붕어빵 틀과 붕어빵은 -> 팩토리 관계
클래스 : 개념(분류), 객체 : 실체
- ex)
좀 더 자세히 설명해주세요..
클래스 : 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념
객체 : 클래스에 의해 생성된 유일무이한 것
사람 홍길동= new 사람();
public class Team {
public String name;
public void showMe() {
System.out.printf("안녕 난 %s야",name);
}
}
package book.chapter03.java8FunctionInterface;
public class Victory extends Team {
public String name;
// 오버라이딩 - 재정의 (같은 메소드르 이름, 같은 인자)
public void showMe() {
System.out.printf("안녕 난 빅토리 팀에 %s이야\n",name);
}
// 오버로딩 - 중복정의 (같은 메소드 이름, 다른 인자 리스트)
public void showMe(String mentor) {
System.out.printf("안녕 우리팀 멘토는 %s 야 \n",mentor);
}
// 오버로딩 - 중복정의 (같은 메소드 이름, 다른 인자 리스트)
public void showMe(String mentor, String mentee) {
System.out.printf("안녕 우리팀 멘토는 %s고 난 %s야 \n",mentor,mentee);
}
}
package book.chapter03.java8FunctionInterface;
public class Driver {
public static void main(String[] args) {
Team team=new Team();
team.name="DS";
team.showMe();
Victory victory=new Victory();
victory.name="동성";
// 오버라이딩
victory.showMe();
// 오버로딩
victory.showMe("victory");
victory.showMe("victory","ANY");
}
}
차이점에 대해 말씀해보세요
상속은 extends를 쓰고.. 인터페이스는 implements를 씁니다... 이러면 탈락
상속이란? 앞에서 상속이란 계층도가 아닌 분류도 즉,
- 하위 클래스 is a kind of 상위 클래스
인터페이스는?
- 구현 클래스 is able to 인터페이스
- 구현 클래스는 인터페이스 할 수 있다. 즉, 인터페이스는 기능과 관련된 부분임
정리
package book.chapter03.java8FunctionInterface;
public class 동물 {
String myClass;
동물() {
myClass="동물";
}
void showMe() {
System.out.println(myClass);
}
}
interface 날수있는 {
void fly();
}
interface 잠잘수있는 {
void sleep();
}
class 포유류 extends 동물 {
포유류() {
myClass="포유류";
}
}
class 박쥐 extends 포유류 implements 날수있는, 잠잘수있는 {
박쥐() {
myClass="박쥐";
}
@Override
public void fly() {
System.out.println(myClass+"는 하늘을 난다 ");
}
@Override
public void sleep() {
System.out.println(myClass+"는 동굴속에서 잠을 잔다.");
}
}
class Main {
public static void main(String[] args) {
박쥐 m1=new 박쥐();
m1.fly();
m1.sleep();
}
}
음 멀티 쓰레드를 설명하기 전에 쓰레드는 실행단위이고... 프로그램의 하나의 실로 ... OOO의 정석에서... 전 이렇게 외웠습니다... 근데 기억이 안나...
멀티 쓰레드와 멀티 프로세스를 얘기하기전에 T 메모리 구조부터 얘기하자
T 메모리 구조 : T 자형으로 생긴 메모리 구조로, 스태틱 / 스택 / 힙영역으로 구분
[질문] 변수들은 메모리에 어디에 있는 것일까?
그럼 이게 멀티 스레드/ 멀티 프로세스와 무슨 관계가 있는데?!
멀티 스레드 / 멀티 프로세스의 이해
멀티 스레드는 T 메모리 모델의 스택 영역을 쓰레드 개수만큼 분할해서 쓰는 것
스택영역이 분할되므로 스레드 간의 스택영역을 침범 할 수는 없지만
큰 측면에서 봤을 때 결국 자바 메모리의 스태틱영역과 힙영역은 공유
멀티 프로세스 대비 메모리를 적게 사용할수 있는 구조
이런 장점때문에 서블릿은 멀티 스레드로 구현되어 있음.
멀티 프로세스
- 두개 이상 다수의 프로세서(CPU)가 협력적으로 하나 이상의 작업(Task)을 동시에 처리하는 것이다. (병렬처리)
- 다수의 데이터 저장 영역, 즉 다수의 T 메모리를 갖는 구조
- 멀티 프로세스는 하나의 프로세스가 다른 프로세스의 T 메모리 영역을 절대 침범할 수 없는 메모리 안전한 구조이지만 메모리 사용량은 그만큼 크다.
추천!
비 추천!
나중에 멀티프로세스와 멀티스레드에 대해 설명 듣고 싶네요... 멋진 포스터구만유~