● 절차 지향 프로그래밍
물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그램 기법입니다. 대표적인 절차 지향 언어에는 C언어가 있습니다.
#객체 지향 프로그래밍(Object Oriented Programming)
실제 세계를 모델링하여 소프트웨어를 개발하는 방법입니다. 데이터와 절차를 하나의 덩어리로 묶어서 생각합니다.
여러 개의 객체 단위로 나누어 프로그래밍하는 방식을 말합니다.
간단히 말해, 단어를 말할 때 떠올릴 수 있으면 object이다.
[출처] 객체 모델링(Object Modeling)과 객체, 클래스(Class) 그리고 인스턴스(Instance)의 관계|작성자 예비 개발자
# class (클래스)
변수, 메소드의 집합입니다. 동일한 속성과 행위를 수행할 수 있는 객체를 만듭니다.
1. 예시(1)
● User 클래스에 대한 변수를 저장
● User 클래스에 대한 값에 정보를 입력하여 노출한다.
● User 클래스에 대한 값에 정보(아이디만)를 입력하여 노출한다.
나머지(이름, 나이, 키, 몸무게) 입력하지 않아 기본값으로 노출한다.
#객체지향 개발 디자인 패턴
1. 은닉화 (캡슐화)
캡슐화의 정의는 필요한 속성(필드)과 행위(메소드)를 하나로 묶고 그중 일부를 외부에서 사용하지 못하도록 은닉화하는 과정을 의미합니다.
내부 데이터, 내부 연산을 외부에서 접근하지 못하도록 은닉 또는 격리시키는 것을 의미합니다.
필드를 감추는 것이며 모든 내용을 메서드를 통해서 변환을 시킨다.
자바는 개발자가 여러 명이기 때문에 변수의 값 변동 시 개발 자체에 잘못 영향을 줄 수 있는 가능성이 크기 때문에 사용한다.
2. 생성자(constructor) 특징
객체를 만들 때 필수적인 데이터를 가지고 객체가 만들어지고 싶다면 생성자를 이용합니다.
1. 객체 생성할 때 실행되는 메서드입니다.
2. 객체를 초기화해주기 위한 목적으로 처음 실행되는 메서드입니다.(자동호출)
처음 실행할 때 기본적으로 생성되어있는 값을 말한다. (예를 들어 게임을 시작할 때 level 1 이러한 것)
3. 반환형이 없다. (return & void 사용 xx / public은 생략가능)
4. 클래스명과 동일한 이름의 메서드입니다.
3. 예시(1)
○ Student class
● private를 쓰게 되면 다른 클래스에서 접근하지 못한다. 따라서 메인에서 확인 xx
● ' 메소드 오버로딩 ' : 메소드명이 같고 시그니처가 다른 메소드를 여러개 만드는 것
* 메서드는 같은 이름으로 여러 개를 만들 수 있다. // 단, 이름이 똑같고 시그니처(데이터 타입)도 동일하게 만들 수 없다.
예를 들면, 두 번째 Student 메서드의 시그니처는 string 1개 int 3개가 있다. 다음의 Student 메서드의 타입은 달라야 한다.
● 생성자 소괄호에 데이터 타입이 없는 경우, 초기화시켜줍니다.
● this: 현재 클래스 내에 필드를 가리킵니다.
● private으로 필드 값 수정이 메인에서는 확인되지 않아 접근할 수 있게 get(값을 가져오다) + set(값을 세팅하다) 메서드를 생성해주는 것이다.
○ Main1 class
● new는 힙 영역에 저장해달라! 그 뒤에 student는 메서드이다.
● stack에 stu라는 변수가 만들어지고 heap에 이름 국어 영어 수학 점수를 저장할 수 있는 객체를 만들어 놓고 번지수를 저장하게 되고 stu는 번지수를 저장하고 가리키는 리모컨 역할을 한다.
● stu2.print(); 초기화 - 값에 아무것도 넣지 않을 때 노출되는 내용이다.
3-1. 예시(2) - Student class 수정 / Main 동일
● this() : 현재 클래스의 생성자.
3-2. 예시(3) - Student class 동일 / Main 수정
Main class안에서 이렇게 불러오는 경우 이름만 노출된다.
3-3. 예시(4) - Student class 동일 / Main 수정
4. 예시(5) - Student class 수정 / Main 수정
문제)
Student 클래스를 이용하여 Choi, Ban 객체를 만들어 입력한 점수에 따른 총점과 평균을 구하는 프로그램을 작성
Choi
이름 : 최수박
국어점수 : 100
영어점수 : 50
수학점수 : 70
Ban
이름 : 반하나
국어점수 : 80
영어점수 : 85
수학점수 : 65
단, print() 메서드를 수정해서 노출해준다.
4-1. 예시(6)
문제)
Student 클래스를 이용하여 Choi, Ban 객체 총점만 노출
5. 예시(7)
문제)
배열 / 반복문 사용하여 입력받은 결괏값을 노출시키는 프로그램
변숫값을 한 개씩 별도로 입력
5-1. 예시(8)
문제)
배열 / 반복문 사용하여 입력받은 결괏값을 노출시키는 프로그램
기존의 한 번에 입력할 수 있는 생성자를 이용하여 입력
'🎨 Programming > JAVA' 카테고리의 다른 글
[JAVA] 15. 패키지(package) & 접근제어자 (0) | 2020.06.28 |
---|---|
[JAVA] 14. 상속 (0) | 2020.06.21 |
[JAVA] 12. 메인(main) 메서드 / 스트링(String) 클래스 (0) | 2020.06.19 |
[JAVA] 11. 함수 / 메소드(Method) (0) | 2020.06.19 |
[JAVA] 10. 배열(Array) (0) | 2020.06.17 |