hyeonga_code
Java_31_객체 지향_OOP, 객체 지향 언어, 속성, 객체, 클래스, 멤버 변수, 멤버 메소드, 매개 변수, 본문
---------------------알아 두면 좋은 것------------------
- component programming과 유사합니다.
- 기본적으로 회사들이 작업했던 프로그램 부품에 문제가 있는 경우
- 많은 사람들이 같이 개발해서 만드는 시대가 되었습니다.
- 이를 Open Source라고 하는데, 다수의 사용자가 업데이트를 하는 경우 충돌을 방지하기위해 객체 지향이 필요한 것입니다.
- Source 공유
- git : 업데이트 시기, 내용을 알 수 있어 적용하기 좋습니다.
- git hub : 무료로 사용할 수 있는 서비스입니다.
- Compile 환경 설정
- Java 버전을 제한하는 환경이 필요합니다.
- Ant, Maven, Gradle
>>> 이를 Docker 가 편리하게 작업할 수 있게 도와주는 역할을 합니다.
-- 객체 지향_OOP
- 관념의 객체 : Object
- 설계도 : Class
- 실제의 객체 : Instance
- 객체 지향 언어
- 특징
- 코드의 재사용성이 높습니다.
- 코드의 관리가 용이합니다.
- 신뢰성이 높은 프로그램의 개발을 가능하게 합니다.
- 객제 지향 언어의 속성
- 은닉화/캡슐화
- 멤버를 숨김
- private 선언
- 간접적으로 접근 가능
- 상속성
- 다형성
- 추상화
- 'Windows' > 'Preferences' > Ant : 따로 설정하지 않은 경우 지정한 jdk를 사용하여 Compile 하고 있습니다.
> *Gradle : Spring Boots
> *Maven : Spring Framework
> Version Control(Team) > *Git
- 스터디를 하는 경우 Gradle, Maven, Git을 공부하는 것이 좋습니다.
- 클래스 // http://www.tcpschool.com/java/java_class_intro
- 구조체에 기능을 넣어 만든 형태입니다.
- 객체를 정의한 것으로 객체를 생성하는 데에 사용합니다.
- 여러 프로젝트의 통합 시에 충돌을 방지할 수 있습니다.
- Object_객체
- 실제로 존재하는 것 또는 개념
- 객체의 속성과 기능에 따라 용도가 달라집니다.
- 클래스로 생성한 객체는 메모리에 저장됩니다.
- 단일 타입이 아닌 경우 Heap 공간에 저장됩니다?
- Instance_인스턴스를 포함하는 의미입니다.
- 인스턴스 화 : 클래스로부터 인스턴스를 생성하는 것입니다.
- 구성 요소
- 속성_변수 + 기능_메소드로 정의합니다.
- 선언부(변수) + 기능(메소드)
- 구조체
- 서로 다른 자료형을 하나로 묶어주는 집합입니다.
- 복잡한 구조로 컴퓨터가 자동으로 제공해줄 수 없으므로 개발자가 선언합니다.
>> 새로운 자료형
- 변수만 선언할 수 있습니다.
- 변수 _ 어떠한 값을 저장 하는 장소입니다.
- 배열 _ 동일한 자료형을 저장하는 장소입니다.
-------------------------------------------------------------------------------------------------------------
package '패키지 명';
import '패키지 명';
+ () 생략 가능
('접근 제한자') ('지정 예약어') class '클래스 명' (extends '상위 클래스 명') (implements '상위 인터페이스'){
'접근 제한자' '지정 예약어' '자료형' '멤버 필드(변수명)';
_ 변수(선언부)
'접근 제한자' '지정 예약어' '반환형' '멤버 메소드(매개변수..)'{
_ 기능 부여(메소드)
}
'접근 제한자' '생성자'() {}
'중첩 클래스(내부 클래스)'
}
------------------------------------------------------------------------------------------------------------ -
class '표현하고 싶은 데이터의 이름'{
1) 멤버 필드 : 특성, 특징, 속성
int number;
String maker;
2) 생성자
2-1) 기본 생성자_Default
'클래스 이름과 동일'() {}
3) 메소드 : 기능, 동작
}
-- 컴파일 시 사용할 수 있는 클래스가 됩니다.
-- 클래스 사용
'생성한 클래스 이름' '변수 이름' = new '클래스 이름'();
-- 변수 이름은 변경되어 여러 개를 생성할 수 있습니다.
class '클래스 명' {
'자료형' '멤버 필드';
'반환형' '멤버 메소드'('매개변수',...){
return '반환값';
}
}
- 멤버 필드
- 변수명을 선언해주는 것
- 멤버 메소드
- 특정 작업을 수행하기 위한 명령문의 집합
- 클래스 내부에서 기능을 위해 선언
- 반복되는 복잡한 작업을 손쉽게 사용하기 위함
- 반환형 : 반환값의 자료형
- 종류
1) void : 반환할 값이 없는 경우 없음을 반환
2) 기본 자료형 : boolean, int, double, float, long, byte, char, short
3) 클래스 : String
- 매개 변수
- 메소드가 실행될 때 초기값으로 주는 변수
- 메소드가 없어도 실행됨
- 반환값 : 메소드 실행 후 결과를 내보냄
- 반환형이 void일 경우, return 만 작성해도 됨(생략 가능)
'Sample.java'
=====
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package com.java.exam09;
public class Sample {
// 멤버 필드
int x;
int y;
// 생성자_default 생성자
// public Sample(){}
// 메소드
// >>> 저장하면 바로 컴파일됩니다.
}
|
'Sampletest.java'
=====
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package com.java.exam09;
public class SampleTest {
public static void main(String[] args) {
// 기본 생성자로 선언
Sample sp = new Sample();
System.out.println("x : " + sp.x);
/*
x : 0
*/
// 여기서 문제 : 멤버 필드에 직접적으로 접근할 수 있게 하는 것이 맞는지?
}
}
|
'Sample.java'
=====
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package com.java.exam09;
public class Sample {
// 멤버 필드
private int x; >>> private 으로 변경
int y;
// 생성자_default 생성자
// public Sample(){}
// 메소드
/*
private : 클래스 내부에서만 사용 가능
default_생략 : 클래스 내부 + 같은 패키지
public : 누구나 사용 가능
protected : 클래스 내부 + 같은 패키지 + 상속 관계
*/
}
|
'SampleTest.java' > "The field Sample.x is not visible" : 접근 불가
'Sample.java'
=====
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
|
package com.java.exam09;
public class Sample {
// 멤버 필드
private int x;
int y;
// 생성자_default 생성자
// public Sample(){}
// 메소드
/*
private : 클래스 내부에서만 사용 가능
default_생략 : 클래스 내부 + 같은 패키지
public : 누구나 사용 가능
protected : 클래스 내부 + 같은 패키지 + 상속 관계
*/
// getter/setter 메소드 생성 >>> [Shift] + [Alt] + [s] > 'Generate Getter and Setters...'
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
|
'SampleTest.java'
=====
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package com.java.exam09;
public class SampleTest {
public static void main(String[] args) {
// 기본 생성자로 선언
Sample sp = new Sample();
// setter 메소드로 값 변경 가능
sp.setX(3);
// getter 메소드로 접근 가능
System.out.println("x : " + sp.getX());
/*
x : 3
*/
}
}
|
=====
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
package com.java.exam09;
import java.util.*; public class same {
public static void main(String[] args) {
intro();
// intro() 메소드 호출
int num1 = input();
// input() 메소드 호출
// 반환된 num 값이 num1 값으로 지정됨
int num2 = input();
// input() 메소드 호출
// 반환된 num 값이 num2 값으로 지정됨
int tot = sum(num1, num2);
// sum(a, b)메소드 호출
// 매개 변수의 개수가 일치하는 메소드만 불러올 수 있음
System.out.println(tot);
// sum()메소드의 반환값을 출력
output(num1, num2, tot);
// output(a, b, c) 메소드 호출
}
public static int input() {
// 매개 변수는 없고 반환형이 int인 'input' 메소드를 선언
Scanner in = new Scanner(System.in);
// 입력 받는 객체 생성
System.out.print("Input number: ");
// 출력됨
int num = in.nextInt();
// 입력 받음
return num;
// 입력받은 num을 반환
}
public static int sum(int a, int b) {
// 매개 변수가 있고 반환형이 int 인 'sum' 메소드를 선언
return a + b;
}
public static void output(int a, int b, int c) {
// 매개 변수가 있고 반환형이 없는 'output' 메소드 선언
System.out.printf("%d + %d = %d \n", a, b, c);
}
public static void intro() {
// 매개 변수가 없고, 반환형도 없는 'intro' 메소드 선언
System.out.println("+ Sum + ");
}
}
|
'Java' 카테고리의 다른 글
Java_34_별칭 (0) | 2023.09.28 |
---|---|
Java_32_클래스 객체 배열 (0) | 2023.09.27 |
Java_30_배열_Array 다차원 배열 (0) | 2023.09.26 |
Java_29_반복문_do while문 (0) | 2023.09.25 |
Java_28_반복문_while문 (0) | 2023.09.24 |