Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

붓, 그리다

객체지향 프로그래밍 본문

JAVA/Basic

객체지향 프로그래밍

붓그린 2017. 6. 16. 17:09
자바문법 > 객체지향 프로그래밍 > 추상화, 캡슐화, 다형성, 상속성

자바스크립트(객체중심의 언어) -> 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