객체지향 프로그래밍
모듈화
유지보수에 용이하다
arrayList
각각의 객체는 호환이 되어야한다.
각각 객체가 호환성을 갖게 하려면
규격이 필요해요!
그 규격이 인터페이스, 추상케이스 다되요.
객체 지향 프로그래밍이란?
객체 지향 프로그래밍(Obect Oriented Programming : OOP) 이란? 여러 개의 독립된 단위, 즉 객체들의 모임으로 파익하고자 하는것/ 각각의 객체들은 호환이 되어야한다. 호환이 되기위해 반드시 규격을 함께 설계해줘야한다.
각각의 객체는 메시지를 주고 받고 데이터를 처리하는데, 뭘 사용해서? 메소드를 가지고 (구체적 매개변수, 리턴)
대표적으로 arraylist add 매소드, 리무브 메서드, get 등
객체지향프로그래밍의 특징
1. 추상화
객체는 유일한거고, 설계(클래스)는 추상적
클래스를통해 만들어진 메모리가 객체
2.다형성 :
설계 추상적으로 구성했기때문에 객체가 다형성으로 설계할수있음. 인과관계.
3. 상속
전화기를 상속받아서 핸드폰과 공중전화가 만들어졌다. 이렇게 말하고 점점점 업그레이드되고, 구체화되는 것.
프로그래밍에서 상속이라는 것은 더 나은 것을 만들어가는 과정, 구체화 되는 과정. 가장 구체적인 설계 ios, Android
추상적인 클래스(부모클래스)의 특성을 그대로 이어받아 더 구체적인 클래스(자식클래스)를 생성하는 기법기본코드를 그대로 재사용하거나 재정의 - 재사용+확대
전화기 - 전화 거는 기능, 받는기능, 전화번호
4.캡슐화 (정보은닉)
접근제한자
객체지향 프로그래밍의 활용방안 중 가장 초보가 이해하기 쉬운 것이 있다!- 사용자(개발자) 정의 자료형 ! (Value Object) _DTO
예시) 우리는 키오스크를 만들고 있습니다!메뉴 정보들(배열,ArrayList)을 미리 저장해두고 싶습니다!
1) 설계
- 그렇다면! 각각의 메뉴들은 어떤 정보를 가지고 있을까?가격, 이름, 판매량,분류 (공통적인 속성들을 뽑아서 정의)
2) 가격숫자를 고를때는 연산이 필요할때 정수로 하는 것이 적합.핸드폰번호는 String - 숫자계산할필요가 없으니까.10진수 : 1-9까지, 그래서 10이라고!
주민등록번호는 int 2개로 쓰는 것이 적합함학번 String 메뉴이름 String 판매량 int 분류 - 코드값
데이터의 무결성 반드시 그 데이터의 하나여야하는데, 데이터의 결점무결성이 존재해야 한다.
=> class로 설계!
//설계도
package cafe;
public class MenuVO {
//사용자 정의 자료형(개발자가 필요에 의해 새롭게 만드는 자료형!)
//내가 만든 자료형~~ MenuVO
//1.여기에 담을 정보들을 변수(필드)로 생성한다.
String name;
String type;
int Price;
int cnt;
필드 + 생성자 + get, set + 메소드
}
//메인 -실행시키는거
package cafe;
public class Main {
public static void main(String[] args) {
//2. 내가 설계(class)해놓은 자료형(vo)을 가지고 실제 메모리(객체)를 만들어보자!
메모리 만드는 키워드 = new★ 뉴옆에는 내가 만들고 싶은 형태
MenuVO m1= new MenuVO(); 메모리 할당되면 주소 부여,주소를 저장해놔야 찾아갈수 있는데 변수에 저장해야한다. 레퍼런스 변수
MenuVO m2= new MenuVO();
//정리) 클래스 - 객체를 만들기 위한 설계도
//객체 - 클래스 사용해(실체화한) 생성한 메모리!
m1.name="아메리카노";//객체에 값 집어넣은거.
m2.name="아이스 바닐라 라떼"
}
}
이거 왜 에러남?
해결하려면 어케함?
객체를 생성할때!
생성자가 호출이 되는데!
생성자 메소드에! 매개변수가 있으니!
객체 생성시 매개변수 개수와 타입을 맞춰줘야 한다!~
같은 자료형일때, 배열 VS VO
- 배열- 배열 할때 유리할때는 인덱스 순서가 필요할때
- VO - 데이터의 이름이 필요할때, 순서 중요 x
메소드 통해서 접근
메소드 중에서 딱 한번 호출되는 거 써서 - 생성자
getname안에 범위안에 변수가 없어서
그냥 this 쓸 필요없음.
set은 수정할때만 사용
유연하다 = 의존성을 제거했다, 추상적인 설계
같이 읽으면 좋은글