Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
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
Tags more
Archives
Today
Total
관리 메뉴

어? 이게 되네

2022.04.04. 월요일 이공계 전문기술 연수사업 6일차 본문

TIL

2022.04.04. 월요일 이공계 전문기술 연수사업 6일차

토끼귀에진주귀걸이 2022. 4. 4. 19:20

오늘 배운 것

사용자 정의 자료형(클래스)
ㄴ기본자료형(boolean,char,byte,short,int,long,float,double)만으로는
프로그램 하기가 번거로워서 사용자가 새로운 자료형을 만들 수 있음.
그 새로운 자료형(세트)의 개념이 클래스임.

이름,국어,영어,수학,총점,평균을 하나의 세트(자료형)로 만들 수 있음 => 클래스를 만들 수 있다는 뜻.

즉, 클래스는 내가 만드는 새로운 자료형이라는 것임.
-------------------------------------------------------------------
java,c++ =>객체지향프로그래밍 object oriented programming - OOP
ㄴ현실 세계의 모든 것을 객체화할 수 있다.
(눈에 보이는 것일 수도 있고, 눈에 안 보이는 개념적인 것일 수도 있음.)

객체
ㄴ세상을 구성하고 있는 모든 것,이 세상에서 유일한 것,단 하나 밖에 없는 것.

그 객체들은 각자 그 객체를 구성하기 위한 고유한 속성들로 구성되어 있음.

토끼가 손에 핸드폰을 들고 이스트백을 메고 은행에 들어간다.
"토끼"라는 객체를 표현하기 위해서
"사람"이라는 클래스를 만들 때에
그 "사람"이라는 클래스에는
"손"이라는 속성,"든다","멘다","들어간다"라는 동작으로 구성되게 만들어야 함.

자바로 객체지향 프로그래밍을 할 때에는
내가 표현해야하는 대상에 대하여
속성과 동작을 분석하여 클래스를 먼저 만들어야 함.

--------------------------------------------------------------------------
클래스 만들기
사람 - Person
속성(멤버변수)
이름 String name "이이이"
나이 int age 26

동작(멤버메소드)
먹는다 void eat(String food)
씻는다 void wash(String soap)

-------------------------------------------------------------------------------
stack이라는 메모리 영역과
heap이라는 메모리 영역이 있음.

기본 자료형은 stack이라는 메모리 영역에 자동 할당 됨.
하지만 클래스 자료형은 heap이라는 메모리 영역에 세트처럼 할당됨.(heap이라는 영역에 객체가 생성됨)+그리고 stack에
주소가 할당됨. - '객체참조변수'라고 함.

kim.name="김김김"
kim.age=27;
여기서 .을 멤버접근연산자라고 함.

----------------------------------------------------------------------------
객체지향 프로그래밍의 특징
ㄴ1.은닉성(encapsulation)
ㄴ클래스를 구성하고 있는 구성요소들을 외부의 다른 클래스로부터 보호함.
모든 구성요소들을 보호하게 되면 아예 그 클랴스 자체를 사용할 수 없음.
따라서 '접근명시자'라는 개념을 만들어 놓음
접근명시자의 종류
private : 외부의 어떠한 클래스도 접근할 수 없음.
public : 외부의 어떠한 클래스라도 접근할 수 있음.
protected : 외부의 클래스로부터는 보호하되, 상속한 자식클래스에게는 접근 허용함.
생략(디폴트) : 외부의 클래스로부터는 보호하되, 동일한 패키지에 있는 클래스들에게는 허용함.

보통은 클래스를 만들 때, 속성(멤버변수)들은 private영역에 두고
동작(멤버메소드)들은 public영역에 둠.
그렇지만, 필요하다면 멤버변수지만 때에 따라 public 영역에 있을 수도 있고
멤버메소드지만 private영역에 있을 수도 있음.

보통은 private에 있는 멤버변수에 접근하기 위해서는
public에 있는 메소드를 통해 접근하도록 클래스를 만듦.

setter-설정자,getter-접근자 method

ㄴ2.상속성
ㄴ3.다형성

---------------------------------------------------------------------------
생성자(Constructor)
ㄴ클래스 이름과 같은 이름을 가진 메소드를 말하며
객체 생성 시에 자동으로 수행되어
멤버변수(들)의 값을 초기화할 목적으로 사용하는 특수한 메소드

다른 일반 메소드들은 호출문에 의해서 동작하고
메소드의 내용이 끝나면 메소드를 호출한 쪽으로 return하게 되어있음.
그래서 모든 메소드들은 return 하는 값의 자료형을 메소드이름 왼쪽에 써줌.
만약 return하는 값이 없다면 void라고 명시해 둠.

그러나 생성자는 일반 메소드처럼 호출문에 의해서 동작하는 것이 아니고
객체 생성시에 자동 수행되기 때문에 return의 개념이 없음.
그래서 생성자함수 이름 왼쪽에 void를 작성하면 안됨!(아무것도 쓰지 않아야 함.)

---------------------------------------------------------------------------
생성자의 중복(overloading)
ㄴ생성자를 여러 개 만들어 사용할 수 있음.
생성자를 중복하기 위해서는 생성자 함수의 매개변수의 개수나 자료형이 달라야 함.

----------------------------------------------------------------------------
this
ㄴ메소드나 생성자의 매개변수 이름을 의미있는 이름으로 정해주다보면
멤버 변수이름과 동일하게 됨. 이 때 멤버 자신을 구별하기 위한 용도로 this를 사용함.

-----------------------------------------------------------------------------
this()
ㄴ생성자가 중복 정의되어있을 때 생성자 안에서 또 다른 생성자를 요구할 때 사용하는 명령.

this()키워드는 반드시 생성자의 첫 번 째 문장에 와야 함.

----------------------------------------------------------------------------
기본생성자
ㄴ매개변수를 갖지 않는 생성자
자바는 사용자가 생성자를 하나도 만들지 않으면 기본 생성자를 제공함.

예를 들어, 사용자가 다음과 같이 Person 클래스를 만들 때
class Person(){

}
사용자가 생성자를 만들지 않으면 기본생성자 즉, 매개변수를 갖지 않는 생성자를 자동으로 제공함.
따라서 다음과 같이 객체를 생성할 수 있음.

Person p = new Person();

문자열은 null,
정수는 0,
실수는 0.0,
boolean은 false로 초기화가 됨.
-----------------------------------------------------------------------

그런데 만약 사용자가 생성자를 한 개라도 만들기 시작하면
자바는 더이상 기본생성자를 제공하지 않음.

class Person(){
public Person(String name){

}
}

Person p1 = new Person(); //이렇게 생성할 수 없음.
Person p2 = new Person("이이이") //이렇게 생성해야함.

---------------------------------------------------------------------------
생성자에 대하여 설명하시오
ㄴ 클래스이름과 동일한 이름의 메소드를 말하며 객체 생성 시에 자동 수행되어 멤버변수들의 값을
초기화할 목적으로 사용하는 특수한 메소드.

또, 생성자는 호출문에 의해서 동작하는 것이 아니라
객체 생성시에 자동 수행하기 때문에 return의 개념이 없음.
따라서 생성자 이름의 왼쪽에는 return 타입이 오지 않음.

또 생성자는 중복하여 정의할 수 있음.
중복하여 정의하기 위해서는 매개변수의 개수나 자료형이 달라야 함.

사용자가 생성자를 하나라도 만들지 않으면 기본 생성자가 제공되지만
만약 사용자가 생성자를 하나라도 만들기 시작하면 더이상 기본 생성자를 제공하지 않음.

---------------------------------------------------------------------------
this와 this()에 대하여 설명하시오
ㄴthis는 만약, 메소드나 생성자의 매개변수의 이름을 의미있는 이름으로 정해주다 보면
멤버이름과 동일하게 됨. 이 때 멤버 자신을 구별할 목적으로 this를 사용함
this()는 생성자가 중복정의되어 있을 때,
생성자 안에서 또 다른 생성자를 요구할 때 사용함.
이 때 반드시 생성자의 첫 번 째 문장에 와야 함.

---------------------------------------------------------------------------

오늘 헷갈린 것

  • 생성자/기본 생성자/접근자/설정자/멤버변수/멤버메소드 등등등 용어가 잘 정리되지 않고 왜 자바는 기본 생성자를 만들어주며 생성자를 만드는 이유..?가 궁금하다.. 그냥 아직 생성자라는 개념이 와닿지 않는다..
  • exam10 box클래스 작동하지 않는 이유!  =>string으로 받았는데 ""로 안해줘서 였음.. 장난하냐?

오늘 한 생각

포도막염이 재발했지만 생각보다 노트북 보는 것에 엄청 불편하지는 않다..

하루하루 감사함을 느끼며 내 할 일에 집중하자...

그리고 제발 평일에 복습이랑 블로그 작성 빼먹지 말자 ㅠㅠㅠ

블로그 포스팅하는 게 익숙하지 않지만 그래도 꾸준히 해보면서 발전해나가자 !!