[필기기준 : 지극히 주관적입니다.]
개념부분 : 핵심으로 이해 가능하지만 짤막한 수준으로 작성
모르는 부분 : 이해를 돕는 다른 검색 사항과 함께 작성
JAVA언어 : C언어를 기반으로 만들어진 객체지향 프로그래밍 언어 ( C언어 문법과 거의 동일하다). C언와 차이점 : C언어(절차적 Programmin Language) , JAVA(객체지향 Programming Language) 기존 C언어는 절차적 언어이기 때문에 재사용성 ↓ 低 👉 유지보수 ↓ 低 : ( 재사용성이 떨어져 👉 유지보수 하기힘들다)
이를 개선하기 위해 만들어진 "객체지향 패러다임" - JAVA, Python 재사용성 ↑ 👉 유지보수 ↑ : (재사용성을 올려서 유지보수하는데에 좋다.)
🔖
14 개념 0:17:32 정보처리기사 필기 4과목.프로그래밍 언어 활용-JAVA_객체지향
* 객체 지향
현실 세계에서 존재하는 실체(Entity, 개체) 및 개념들을 객체라는 독립된 단위로 구성하고, 이 객체들이 메시지를 통하여 상호작용함으로써 전체 시스템이 운영되는 개념
- 클래스(빵틀) : 개념적인 의미
- 객체(빵) : 구체적인 의미
틀을 잘 만들어 놓으면 빵은 얼마든지 다시 만들 수 있다.
= 클래스를 잘 만들어놓으면 객체를 얼마든지 만들어 낼 수 있기 때문에 재사용성이 우수하다.
![](https://blog.kakaocdn.net/dn/38nGa/btrZdeYXxXh/rl9FSEhDaOj0SgBYuYlkoK/img.png)
객체를 만들어 놓았을 때 2부분으로 나뉜다. ( 속성과 메소드로 )
- 속성 = 말 그대로 특성. : 내 생각에, 언어적으로는 형용사
- 메소드 : 자가용(객체가)이 가질 수 있는 행위. : 내 생각에, 언어적으로는 동사
ⅰ) 클래스를 통해서👉 객체를 만들어 낼 수 도 있지만
역으로,
ⅱ) 유사한 객체들 끼리 공통된 특성들을 묶음으로 👉 클래스를 만드는 방법도 있다. : 이를 추상화(모델링)한다고 한다.
![](https://blog.kakaocdn.net/dn/psB2J/btrY1l6VE8j/2l7GshEzvuKWhxdzVWYJck/img.png)
~속성, 메소드 사용방법~
✔️속성
객체.속성 👈 데이터
ex ) Bus.Wheel = 4;
✔️메소드 : 함수 개념이기 때문에 ()가 붙는다.
객체.메소드() 👈 연산자
ex ) Bus.Drive();
💫Java언언에서 속성인지 메소드인지 햇갈릴때
괄호가 없으면 속성이구나~ 하면 된다.
🔖
15 개념 0:13:36 정보처리기사 필기 4과목.프로그래밍 언어 활용-JAVA_입/출력함수
![](https://blog.kakaocdn.net/dn/qTrad/btrZbscOXl7/kSSSi41HkxHbiasKz9hAW0/img.png)
![](https://blog.kakaocdn.net/dn/bMohZK/btrZeiNNCGl/CVbn6jvLJSueLgoyCziqY0/img.jpg)
![](https://blog.kakaocdn.net/dn/1ZVC2/btrY8hXqawk/pEPxcZFXXmMMBUAwK8aLXk/img.jpg)
🔖
16 개념 0:17:16 정보처리기사 필기 4과목.프로그래밍 언어 활용-JAVA_문법, 접근제한자
✅JAVA언어 공부팁
C언어와 거의 같기 때문에 기준공부는 C언어로 두고
👉JAVA언어는 C언어와의 다른점(차이점)을 중점적으로 공부하도록 한다.
![](https://blog.kakaocdn.net/dn/N1zG9/btrY5kNIjcz/rJi4KHktMGwV9ZxvhYxyWK/img.png)
- int a[]와 = int[] a는 값습니다.
- 초기화하며 배열 선언시 int[] a = {1,2,3,4,5,6}; 처럼 입력해도 됨.
*초기화시 배열 크기 생략 가능 : 비워두면 들어가는 {값}에 따라서 크기가 알아서 정해지기 때문에 생략해도 된다.
[6:00] 이부분 어렵다😅
![](https://blog.kakaocdn.net/dn/bVAAjY/btrZbqlMSFS/7N6MrFu5bzlmiA3W9TNXz1/img.png)
![](https://blog.kakaocdn.net/dn/z6afY/btrZa3dgzlc/FikMAscuWe8Iu2HqL6lLo0/img.png)
String : 문자열 클래스
str : 문자열 객체 변수⭐
int c = str.length() 👉 객체에서 메서드를 호출을 해서 바로 길이를 반환 할 수 있다.!!
[C와의 차이점]
JAVA는
String str = "gisafirst" ;
ㄴ 위처럼 클래스(String)에서 - str(객체를 만들어서) 👉 그리고 나서 사용을 해야한다는 점 !
![](https://blog.kakaocdn.net/dn/rMBVw/btrZauvqRxh/5EV3A4LVZHgrL4HDIqAPk1/img.png)
🔖
17 개념 0:20:37 정보처리기사 필기 4과목.프로그래밍 언어 활용-JAVA_상속, 다형성
자바의 특성 (덕분에 재사용성↑ 따라서 유지보수↑)
1️⃣상속 inheritance : 하위 클래스는 상위 클래스의 메소드와 변수들을 정의하지 않고 바로 사용(물려받는 것)
ex) (상위 클래스 : 비행기, 자동차) → 재사용
- 하위 extends 상위 → extends 키워드 사용해서 상속 받음.
* 오버라이딩(Overriding) : 하위 클래스에서 부모 클래스의 메소드를 재정의하는 과정
- 오버라이딩 메소드는 부모 클래스[] 메소드보다 우선순위 높음.
[11:29]
* 오버로딩(Overloading) : 하나의 클래스 내에서 같은 이름으로 여러 개의 메소드를 정의
→ 같은 이름의 함수를 여러 개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답한다.
* 매개변수(Parameter, 파라미터) : 각 함수 간 데이터를 넘겨주는데 쓰이는 변수
[14:24]
2️⃣다형성 Polymorphism : 하나의 클래스 내에서 같은 이름으로 여러 개의 메소드를 정의
→ 같은 이름의 함수를 여러 개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답한다.
1) 오버라이딩(Overriding) : 메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법으로 응답할 수 잇는 것
- 동일한 이름의 여러 메소드를 다른 사양으로 정의 가능
2) 오버로딩(Overloading) : 매개변수의 수 또는 타입을 달리하여 구분
3️⃣캡슐화 Encapsulation : 데이터(속성)와 기능(메소드)를 하나의 객체로 묶어 구성(코딩)
- 객체의 속성과 메소드를 다른 객체가 접근할 수 없도록 하기 때문에 메시지 수신에 의해 요구된 작업을 수행한다.
- 클래스를 선언하고 그 클래스를 구성하느 객체에 대하여 접근 제한자를 선언하여 처리
- 왜? 정보 은폐 👉 외부에서 변경 X 👉 프로그램 변경에 대한 오류의 파급효과가 적다.
👉 소프트웨어의 부품의 재사용 증대와, 소프트웨어의 수정, 시험, 유지보수성이 향상되는 효과가 있다.
*메시지(Message) : 객체들 간에 상호작용을 하는데 사용되는 수단
*정보 은폐, 정보 은닉(Information Hiding)
: 객체는 다른 객체로부터 자신의 자료를 숨기고 자신의 연산만을 통하여 접근을 허용하느 ㄴ것
- 왜? 고려되지 않은 영향들을 소화하기 위해
4️⃣정보은폐
* 매개변수(Parameter, 파라미터) : 각 함수 간 데이터를 넘겨주는데 쓰이는 변수
🔖
18 문제 0:17:52 정보처리기사 필기 4과목.프로그래밍 언어 활용-JAVA 기출풀이
![](https://blog.kakaocdn.net/dn/bg17K3/btrZjKdf6nN/DyxMv7NijZKf0psvzkYSe1/img.png)
📄문제 1
삼항 연산자
형식 : 조건? 수식1 : 수식2
if
True 일 때 실행되는 문장
else
False 일 때 실행되는 문장
📄 문제 2
~ class 접근 제한자 ~ ⭐⭐⭐
- public : 모든 접근을 허용
- protected : 일 패키지내의 클래스와 다른 패키지의 상속 관계에 있는 클래스에서도 접근가능
- default : 자신을 포함하는 패키지에서만 접근 가능
- private : 자신을 포함한 클래스에서만 참조 가능
X아닌 것들(오답모음)X
- package 는 접근 제한자가 아닙니다.
- internal 은 접근 제한자가 아닙니다.
[1:36]
![](https://blog.kakaocdn.net/dn/ML5x1/btrZk9pVjPH/2KzZ2n9BBRkCQMVFFOFn80/img.png)
📄 문제 3
class Child extends Parent {
public void print() {
System.out.println("Child");
}
}
👉class 자식이앞! extends 부모가뒤! {
}
✔️객체(Object) : 클래스의 인스턴스이며, 객체들 간의 상호작용은 메시지를 통해 이루어진다.
- 형식 : 클래스이름 변수이름 = new 클래스이름();
📄 문제 4
long : 정수형 ( 8 Byte )
📄 문제 5
스의 인스턴스이며, 객체들 간의 상호작용은 메시지를 통해 이루어진다.
- 형식 : 클래스이름 변수이름 = new 클래스이름();
long : 정수형 ( 8 Byte )
- System.out.print(변수), System.out.printf(변수) : 변수 출력 함수
- System.out.println(변수) : 변수 출력 후 줄 바꿈
[3:03]
📄 문제 6
길이가 nSize(4)인 정수형 배열 arr를 만드는 반복문
![](https://blog.kakaocdn.net/dn/Bhb5Y/btrZkxEzpGq/QsNuhsGvb5K4q3QmXoyFI0/img.jpg)
[6:26]
![](https://blog.kakaocdn.net/dn/bRZ9U2/btrZk9pVzmI/16rggOieGeO2Ua3QrE01i0/img.png)
📄 문제7
println : 변수 출력 후 줄 바꿈
📄 문제 8
③ while(true) : BOTH (C언어可 andJAVA可) 둘다 가능!! 자바는 꼭 불린형태로만 되어있어야 된다(TRUE, FALSE)
④ while(1) : C언어 可 , JAVA 不可!
📄 문제 9
Scanner란 클래스를 사용하기 위해서는 import를 하여서 패키지를 가지고 와야 한다.
ㄴ import java.util.(Scanner)
Scanner란 입력받는 기능을 가지고 와야 합니다.
[8:40]
![](https://blog.kakaocdn.net/dn/ZONyS/btrZjZ2pfHM/Bzh4Yt6QkrONWs7DwltVtk/img.jpg)
![](https://blog.kakaocdn.net/dn/diSa7i/btrZlrxhYLy/yrEVWo98qRpG1KvQEh6yP1/img.jpg)
📄 문제 10 📄 문제 11
[12:03]
![](https://blog.kakaocdn.net/dn/po9cu/btrZjYJb6uE/Y4nqa0Pvk2HGoksWTiDaNk/img.png)
![](https://blog.kakaocdn.net/dn/umzCU/btrZkx5FoiE/TIrC277gfFcSOYCPdMlE21/img.png)
📄 문제12 (JAVA의 경우)
자바의
wilte(y--) 👉(자바의 조건문 안에는 T or F 로 판별이 가능해야 한다.) 👉 Boolean(T/F)
C언어는 숫자도 Boolean(T/F)이외로 숫자값도 가능한데,
0만 False 이고
나머지 값들(음수, 양수, 실수(?)) 은 다 true로 처리한다. ✔️암기tip: ( 無는 false / 이외로 존재하는 것은 모두 True)
📄 문제12 보충학습 (C언어의 경우)
y-- 후치 : 값을 사용후 감소
--y 전치 : 값을 사용전 감소
댓글