붓, 그리다
객체지향 프로그래밍 본문
자바문법 > 객체지향 프로그래밍 > 추상화, 캡슐화, 다형성, 상속성
자바스크립트(객체중심의 언어) -> EcmaSctip6(TypeScript)
1) 추상화
- 현실세계에 존재하는 모든 사물의 공통점과 기능을 유추해서 클래스를 만들어내는 일련의 과정
-> 저장하고 싶은 대상(객체로 정의)을 공통점, 기능을 클래스로 만들어기는 과정
*상세화 <- >추상화의 반대말
- 자세하게 설계
(1) Object(객체) : 현실세계에 존재하는 모든 사물
-> 컴퓨터로 저장하는 대상자
-> 저장하고 싶은 대상의 공통적인 특징 : 멤버변수지정
-> 행동양식(기능)
Q.클래스를 왜 만드는가?
1) 실행목적(main()가 필요)
2) 데이터를 저장(main() 필요 없음)
[ 메서드의 구성 ]
[접근지정자] void 매서드명(자료형 변수, 자료형 변수2,){
메서드 호출 시 수행될 코드
}
[ 메서드의 기능 ]
1) 매개변수 X 반환값 X
- 단순하고 반복적인 일을 수행할 때 사용
- 반환값이 없다는 표시 : void
-> 저장된 값을 출력만 함
2) 매개변수 O 반환값 X
- 매개변수 개수가 많을수록 메서드가 할 일이 많다진다.
- 데이터 저장, 계산, 조회 등의 다양한 목적
3) 매개변수 O 반환값 O
- 주로 계산목적
- 웹상에서 주로 사용
*서로 관련이 있는 클래스는 하나의 패키지에 저장한다.
ex) Car 클래스 + CarHandling 클래스는 관련이 있기에 하나의 패키지에 저장
EX1) 추상화(설계도 구성)
package j0530;
// 자동차의 공통적인 특성, 기능을 생각해서 작성
public class Car {//저장하고 싶은 대상 : 객체
// 1. 객체의 공통적인 속성(특성)
String name; // 차이름
int output; //배기량
String color; //자동차 색
int year; // 연식
// 상태
int current_speed; // 자동차 속도
boolean sidong=false; // 차의 시동 : default 지정 가능
// 2. 기능
// 1) 시동걸기 : 단순, 반복적인 메서드(매개변수 x, 반환값 x)
void startEngine() {// 메서드는 소문자로 시작하여 대문자로 구분, () 매개변수 없음
sidong=true;
System.out.println("시동이 걸림!");
}
// 2) 속도 증가 : 80km -> 120km(수정) => 매개변수가 필요, 반환값 x
void speedUp(int speed) { // 자바스크립트 : function speedUp(speed){}
current_speed+=speed; // current_speed=current_speed+speed
System.out.println(speed+"km만큼 속도 증가");
}
// 3) 속도 감소
void speedDown(int speed) {
current_speed-=speed;
System.out.println(speed+"km만큼 속도 감소");
}
// 4) 차의 조회 : 단순, 반복 =>
void carInfoPrint() {
System.out.println("==차의 정보를 출력합니다.==");
System.out.println("차의 이름 : "+name);
System.out.println("차의 배기량 : "+output);
System.out.println("차의 색상 : "+color);
System.out.println("차의 속도 : "+current_speed);
}
// 5) 주차 : 단순, 반복 => (매개변수 x, 반환값 x)
void stop() {
sidong=false;
current_speed=0;
System.out.println("시동 꺼짐, 주차 완료");
}
// 설계도(Car) -> 실행(CarHandling (main()) -> 자동자 생성
}
[ 객체 생성 ]
- 객체의 정보만 따로 저장할 공간을 만들어달라는 의미
-> 변수로 저장
1) 객체 생성
설계도 이름(클래스) 객체명(=변수); // 객체선언, 객체명을 만들겠다는 예약
객체명=new 설계도명(); // 메모리에 공간할당=인스턴스 (4yte(16진수)), RAM
2) 저장
객체명.멤버변수(속성)=값;
3) 메소드 호출
객체명.메서드명(~);
EX2) 실행하기
package j0530;
//설계도(Car) -> 실행(CarHandling (main()) -> 자동자 생성
// 서로 관련이 있는 클래스는 하나의 패키지에 저장한다.
public class CarHandling {
public static void main(String[] args) { // 실행해야하기 때문에 메인 클래스가 있어야 함
// TODO Auto-generated method stub
// 1. 자동차를 생산->객체생성 : 자동차의 정보만 따로 저장할 공간을 만들어달라
// 형식) 설계도 이름(클래스) 객체명(=변수)=new 설계도명();
Car morning; // 객체 선언, morning을 만들겠다는 예약
morning=new Car(); // 메모리에 공간 할당(인스턴스)
System.out.println("morning=>"+morning);
// morning의 주소값>j0530.Car@15db9742 (패키지명.클래스명@16진수(주소값))
// 2. 저장형식) 객체명.멤버변수(속성)=값
morning.name="모닝";
morning.output=1000;
morning.color="blue";
morning.year=2017;
// 3. 메소드 호출(시동걸기)
morning.startEngine();
morning.speedUp(150);
morning.speedDown(70);
morning.carInfoPrint();
morning.stop();
}
}
morning=>j0530.Car@15db9742
시동이 걸림!
150km만큼 속도 증가
70km만큼 속도 감소
==차의 정보를 출력합니다.==
차의 이름 : 모닝
차의 배기량 : 1000
차의 색상 : blue
차의 속도 : 80
시동 꺼짐, 주차 완료
t
'JAVA > Basic' 카테고리의 다른 글
배열 Array (0) | 2017.06.16 |
---|---|
정적 메서드, API, 동적 메서드 (0) | 2017.06.16 |
제어문 2 (0) | 2017.06.16 |
객체지향언어 (0) | 2017.06.16 |
다중IF문, While문, For문 (0) | 2017.06.16 |
Comments