본문 바로가기
국비 학원 가서 개발새발

국비학원 4일차) 클래스와 객체(자바의 정석 기초편으로 복습)

by 휴일이 2022. 9. 29.

 

절차 언어는 아래에서 위로

객치향은 불러와서 꺼내쓰기

 

객체 지향 언어의 장점

-> 코드 간의 관계를 맺어주어 유기적인 프로그래밍 가능

 

 

객체지향의 특징

 

1. 코드 재사용성이 높다

기존 코드 활용 가능

2. 코드 관리가 용이하다

하나만 바꾸면 주르륵 바뀌어 유지보수 탁월!

3. 신뢰성이 높은 프로그래밍

코드 중복을 제거해서 오동작을 방지하고

코드를 보호하며 올바른 값을 유지한다

 

 

이론만 파지 말고

먼저 실습 후 객체지향적인 코드로 개선(이론만 ㄴㄴ)

 

 

클래스:객체를 정의한 것 (설계도, 틀)

ㄴ 객체 생성에 사용한다

객체:실제로 존재하는 것, 프로그래밍에서는 개념, 논리로 접근(제품)

"클래스에 정의 된 내용으로 메모리에 생성된 것"

ㄴ 객체가 가진 기능과 속상에 따라 용도가 다르다

 

 

클래스-설계도 (Tv설계도, 붕어빵 틀...)

객체-제품(Tv, 붕어빵...)

설계도를 잘 만들면 객체 생성은 쉽다 !

 

 

객체는 속성/기능으로 나뉜다 (속성과 기능의 집합)

변수(속성) Tv:크기,길이,높이,색상,볼륨,채널.... String color, int channel, boolean power...

메소드(기능) Tv:켜기,끄기,볼륨조절,채널변경.... void power {power=!power};...

 

class { 변수 지정   <<=얘를

void{기능};  <<=얘네가

void{기능};  <<=사용함

}

 

 

클래스로부터 객체를 만드는 과정 " 인스턴스화 " instance

클래스로부터 만들어진 객체->클래스의 인스턴스

객체:인스턴스를 대표하는 일반적인 용어 (객체랑 인스턴스는 거의 같은 말)

 

설계도          인스턴스화              제품

클래스   ---------------------------->인스턴스(객체)

 

클래스는 객체 생성을 위해 필요함->설계도는?제품을 만들기 위해!

객체는 객체를 사용하기 위해 필요->제품은? 쓰려고 만듬!

객체를 사용한다는 건?

ㄴ객체가 가진 속성/기능 사용-------->변수,메소드 사용

 

 

클래스명 변수명; <- 클래스의 객체를 사용하기 위해 참조변수 선언

변수명 = new 클래스명(); <- 객체 생성 후, 객체 주소를 참조변수에 저장

 

예)

Tv t; <-Tv클래스 타입의 참조변수 t 선언 (t라는 공간 생성)

t = new Tv(); <-Tv인스턴스 생성하고 인스턴스 주소를 t에 저장 (t에 인스턴스 생성내용 생성)

인스턴스 생성 전에는 메모리 공간만 있고 인스턴스는 ㄴㄴ null

 

t.channel =7; <-참조변수t에 저장된 인스턴스의 멤버변수 channel값 지정

t.channelDown(); <-t가 장조한 Tv인스턴스의 channelDown 메소드 호출

void channelDown() { -- channel; }; <-이 메소드

 

그러면? t.channel = 6; 이 된다

 

Tv 리모컨(참조변수 t)로 Tv(인스턴스)를 다룬다

Tv t1 = new Tv();

Tv t2 = new Tv();    서로 다른 주소를 가지고 있어서 t1 건드려도 t2엔 변화 없음

 

 

 

객체배열(==참조변수 배열)

 

객체 배열 안에는 객체의 주소가 저장된다

Tv t1, t2, t3;    -> Tv[] tvArr = new Tv[3];  객체 배열 생성

t1 t2 t3 라는 공간 생성 tvArr[0], tvArr[1], tvArr[2] 라는 공간 생성

공간만 생성하고 내용은 아직 없음 인스턴스화 안 됨

 

tvArr[0] = new Tv(); <-인스턴스 저장

 

Tv[] tvArr = {new Tv(), new Tv(), new Tv()};

배열 초기화하면 간단하게 가능!

for (int i=0;i<tvArr.length;i++)

{ tv Arr[i] = new Tv(); }

for 문으로도 간단하게 가능!!!

 

 

 

 

학원에서 이해가 안 돼서

자바의 정석으로 보고 다시 공부했다 ㅠㅠ

 

 

728x90