Day9
벌써 3주차의 시작이다! 시간이 꽤나 흐른거 같은데 날짜로 따지면 9일 밖에 지나지 않았다니 생각보단 시간이 빠르게 가진 않는 것 같다 ㅋㅋ 이제 참조타입까지 다 끝나고 오늘부터 악명 높은 객체지향 파트로 들어갔다. 아무래도 이론이 중요한 부분이다보니 오늘은 코딩을 한 시간은 한시간도 채 안 되는 것 같고 나머지 시간 내내 이론을 배웠다. 아무래도 이론이 손으로 코딩하는 것보다는 상대적으로 지겹고 지루한데, (중간에 살짝 졸 뻔;) 그래도 강사님께서 이 부분은 매우 중요하기 때문에, 시간이 얼마나 걸리던 꼭 반드시 완전히 이해하고 넘어가야 한다고 몇번이고 강조하셨다. 책과 피피티를 계속 봐야할 것 같다.
1. 붕어빵틀(클래스) -> 붕어빵(인스턴스)(=객체)
붕어빵틀은 먹을 수 없다!
우리가 필요한건 붕어빵이라는 객체가 필요하다
2. 클래스 -> 객체의 설계도 (건축도면 or 조선도면)
3. 클래스에서 객체(붕어빵)를 찍어내는 과정
->인스턴스화(instantiation)
-> 인스턴스 생성
-> 인스턴스 -> 객체라고 하는 것이 됨.
해당 클래스에서 찍어낸 객체를 인스턴스라고 한다
4. 다형성(Polymorphism) : 상속을 전제로 한다!
<동물> : 소리발산
↗ ↑ ↖ : 상속
<강아지> <고양이> <사람>
(멍멍) (야옹) (엉엉)
동물보고 소리발산하라고 했는데 각자 다른 소리를냄
-> 이것이 바로 다형성!!!!
다형성 : 같은 타입의 객체가 / 같은 행위를 했는데 / 다른 결과가 나오는 것
5. 무결성 : 걸함이 없는 성질 = 일관성 + 정확성
6. ****다형성의 전제조건 : 부모/자식 상속관계 형성****
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
객체 지향 프로그래밍 OOP
부품 객체를 먼저 만들고 이걸 하나씩 조립해 완성된 프로그램을 만드는 기법
객체란?
물리적으로 존재하는 모든 것 (마우스 펜 키보드 손 모니터 등등등....)
추상적인것(자동차,사람) 중에서 다른 객체와 구분되는
자신의 속성과 동작을 가지는 모든 것(아반떼, 진동훈)
객체는 필드(속성)와 메소드(동작)로 구성된 자바 객체로 모델링 가능
객체의 상호작용
객체들은 서로간에 기능(동작)을 이용하고 데이터를 주고 받음
사람 -- 메소드호출 --> 계산기
<-- 결과 리턴 --
사람 --- Calculator.add(10,20) ---> 계산기
<------ int result = 30 ------
관계의 종류
객체지향 프로그램에서 객체는 다른 객체와 관계를 맺는다
집합관계 : 완성품과 부품의관계 (자동차 <- 엔진,타이어,핸들)
사용관계 : 객체가 다른 객체를 사용하는 관계 (사람 -> 자동차)
상속관계 : 종류 객체와 구체적인 사물객체 관계 (기계 <- 자동차)
객체지향 프로그래밍의 특징
1. 캡슐화 (은닉화)
객체의 필드와 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것
외부 객체는 객체 내부 구조를 알지 못하며 객체가 노출해 제공하는 필드와 메소드만 이용 가능
외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 필드와 메소드를 캡슐화 하여 보호하는 것
자바 언어는 캡슐화된 멤버를 노출시킬지 숨길지 결정하기 위해 접근제한자(Access Modifier) 사용
2. 상속
상위 객체의 필드와 메소드를 하위 객체에게 물료주는 행위
하위 객체는 상위 객체를 확장해서 추가적인 필드와 메소드를 가질 수 있다
상속 대상 : 필드와 메소드
상속의 효과 : 객체의 다형성 구현의 전제가 된다
3. 다형성
*****다형성의 전제조건 : 부모/자식 상속관계 형성*****
같은 타입(동물)이지만 실행 결과가 다양(멍멍, 야옹)한 객체를 대입할 수 있는 성질
다형성1
부모 타입에는 모든 자식 객체가 대입
(완전히 쏙 들어간다 보이는건 부모 뿐 따라서 부모의 타입과 필드만 쓸 수 있다)
인터페이스 타입에는 모든 구현 객체가 대입
class Parent {
소리발산() {}
},
class Child extends Parent {} -> 상속
Parent parent = new Child(); -----> 다형성1
다형성2는 코드로 이해한다
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
현실세계 : 설계도 -> 객체
붕어빵틀 -> 붕어빵
자바 : 클래스 -> 객체
개발자 -> 클래스 -> 객체 (얼마든지 찍어낼 수 있다)
-> 객체 (얼마든지 찍어낼 수 있다)
-> 객체 (얼마든지 찍어낼 수 있다)
클래스 이름 규칙
1. 하나 이상의 문자로
2. 첫번째 글자는 숫자 불가
3. $, _ 이외의 특수문자는 불가
4. 자바 키워드는사용 불가
new 생성자이름();
new 연산자 (객체 생성 연산자)
1. JVM RDA HEAP에 새로운 객체를 생성
2. 뒤에 지정된 생성자를 호출 -> 새로운 객체를 초기화(값을 넣어준다) (생성자 개념은 아직 안 배움)
3. 초기화까지 끝낸 사용가능한 객체의 주소를 반환
클래스의 구성멤버
필드 : 객체의 데이터가 저장되는곳 (모델링 대상이 된 타겟객체의 속성)
생성자 : 객체 생성시 초기화 역할 담당 (모델링 대상이 된 타겟객체의 행위)
메소드 : 객체의 동작에 해당하는 실행블록
변수가 클래스블록 안에서 선언되면 필드라고 부름
'국비학원' 카테고리의 다른 글
[국비지원] KH 정보교육원 11일차 (0) | 2022.04.07 |
---|---|
[국비지원] KH 정보교육원 10일차 (0) | 2022.04.06 |
[국비지원] KH 정보교육원 8일차 (0) | 2022.04.04 |
[국비지원] KH 정보교육원 7일차 (0) | 2022.04.01 |
[국비지원] KH 정보교육원 6일차 (0) | 2022.03.31 |