객체지향적 프로그래밍
구조적 프로그래밍이란?
함수 기본이 되는 프로그래밍 방식(기법) ---> 옛날 기법
객체 지향적 프로그래밍? 언어(자바,C# 등등) --객체 지향 프로그래밍 기법을 지향하는 언어를 의미한다.
- 객체 지향적 방식으로 개발(프로그래밍)
- 개발 하는 기법
- 객체 단위로 프로그래밍하는 기법(방식)
예) 컴퓨터 == 애플리케이션
경제 / 용도
메모리 Object -->유지보수가 용이하다.
전원장치 Object
메인보드 Object
CPU Object
그래픽카드 Object(개발자 구현)
운영체제 Object(구매 라이브러리)
케이스
[SSD/HDD/] 2테라 확장 Object - 확장
ODD
등등 생산성 좋다./분업화 가능/팀작업
(예를 들어 메모리가 고장 났다고 하자... 컴퓨터를 버릴 필요없다. 그냥 메모리를 수리하거나 교체하면된다.)
==>유지보수가 용이하다는 의미이다.
각각 조립 부품(객체,객체,Object)들을 구매
(조립하는 것이기 때문에 빨리 만들수 있다.)
(==> 생산성이 좋다는 의미이다.)
컴퓨터 조립 = Object + Object + Object + Object + Object +...
애플리케이션 = Object + Object + Object + Object + Object +...
(애플리케이션(프로그램 만드는 과정)도 컴퓨터 조립하듯이 부품들을 조립해서 하고 싶어졌다.
--->객체 지향 프로그래밍)
객체와 클래스
- 객체(Object), 개체, 물건 ?
클래스를 가지고 실제로 존재하게 만드것. 사물(유형) 또는 개념(무형)의 객체
- 클래스?
객체를 만들기 위한 설계도
- 인스턴스화?
클래스를 가지고 객체를 만드는 과정
예) 집설계도면(클래스) ->건축(인스턴스화) ->대지 위에 집(객체)
1 2 3
"인스턴스화": 1번을 가지고 2번 과정을 통해 3번을 만들어 내는 이 모든 과정을 통틀러 의미한다.
OOP
OOP의 특징 == 클래스의 특징
== O+O+O+O+O+ (객체 지향적 프로그램이 어차피 객체들이 모여서 하는 프로그래밍이다.
객체를 만들려면 클래스로 만드는것이기 때문에
OOP의 특징 == 클래스의 특징 == O+O+O+O+O+ 전부다 같다고 할 수 있다.)
1)상속성
2)***다형성***
3)추상화
4)캡슐화
5)은닉화
객체의 구성요소
객체의 구성 요소 = 기능(일) + 속성(특성)
ㄱ. 객체의 구성 요소를 "멤버"라고 부른다.
ㄴ. 속성(property) == 멤버변수 == 필드(field) == 특성(attribute) ==상태
ㄷ. 기능(function) == 멤버함수 == 메서드(method)
클래스? 집(객체)을 지으려고 설계도면(클래스)
건축설계사 - 설계도(=클래스)를 그림 = 객체를 만들기 위한 설계도를 클래스라고 한다.
클래스 설계하는 과정
1) 객체의 구성 요소 파악-> 목록 작성 (기능, 속성)
2) 클래스 선언
[접근지정자][기타제어자] class 클래스명 [extends 수퍼클래스] [implements 인터페이스...]{
[클래스의 멤버(기능+속성)를 선언]
기능(필드) 선언
속성(메서드) 선언
}
3) 객체 생성 - 테스트
4) 문제점 파악 - 유지,보수
5) 상용화
6)보완 문제점 발생 + 멤버(기능,속성) 추가(확장) - 버전 관리
자동차 예시
자동차(객체)를 만들기 위해 설계도 : 클래스
1) 객체의 구성 요소 파악-> 목록작성
기능 + 속성
스포츠카
0~100km 3초
전기
2도어
가로*세로
알루미늄(특수재질)
등등
2) 클래스 선언 Car 클래스 선언
3) 객체 생성 - 테스트 , 클래스 참조타입
객체 선언 및 생성 형식
new 클래스명( ); -->이게 지금 객체를 인스턴스로 생성하는 코딩
-->실제 자동차를 만듬
= new 클래스명();
클래스명 변수명 = new 클래스명();
Car myCar = new Car();
new Car( ); //인스턴스화를 의미하는코딩
//이 코딩에 의해 스택영역에 생성된 객체가 힙 영역에 객체를 인스턴스 시킴
myCar 가 의미하는것 ==> 변수명/참조변수/[객체]
멤버 연산자 사용법
멤버 접근할 때 ,멤버연산자 사용한다.
객체명.필드
객체명.메서드( )
Scanner sc = new Scanner(System.in);
sc.nextInt( );
Car myCar = new Car();
myCar.name = "스포츠카-2";
myCar.speed = 200;
출력 기능(메서드)
객체명.메서드( )
myCar.dispCarInfo( );
**참고)
기본형- 8가지
byte short int float double
char
boolean
참조형 - 클래스,[배열], 인터페이스
new 연산자에 의해서 실제 기억공간의 힙이라는 동적 영역에 할당되고 스택 영역에서 주소를 참조한다.
int[]m = new int[5];
힙
[ ][ ][ ][ ][ ][ ] [시작주소]
시작주소 m 변수/참조변수/배열명
Random rnd = new Random();
new에 의해서 힙에 영역이 할당되고 rnd(객체)가 그 주소를 참고한다는 소리
클래스를 자료형으로 선언된 변수(rnd)를 참조 변수, 객체라고 한다.
'Java' 카테고리의 다른 글
[Java] 클래스(3)__개발공부 16일차-1 (0) | 2022.03.11 |
---|---|
[Java] 클래스(2)__개발공부 15일차-1 (0) | 2022.03.11 |
[Java] 제어문 연습(* 출력)__개발공부 6일차-2 (0) | 2022.03.07 |
[Java] 기본 입출력,래퍼 클래스__개발공부 3일차-3 (0) | 2022.02.19 |
[Java] IDE 설치 및 환경구축 __개발공부 1일차-3 (0) | 2022.02.15 |