- [Java] 22. 객체 지향 패러다임2024년 04월 16일
- Song hyun
- 작성자
- 2024.04.16.:26
728x90반응형[Java] 22. 객체 지향 패러다임
1. 객체 지향 패러다임
(1) 객체지향 패러다임(Object-Oriented Paradigm)은 소프트웨어를 설계하고, 구현하는 방법론 중 하나이다.
실세게의 객체를 모델링하여 소프트웨어의 복잡성을 관리하고, 코드의 재사용성을 높이는 데 중점을 둔다.
*이 패러다임의 핵심은, 프로그램을 상호작용하는 객체들의 집합으로 본다는 것이다.
각 객체는 자신의 데이터와 행위를 가지는 독립적인 엔티티로 취급한다.
(2) 엔티티(Entity): 특정 속성과 행동을 가진 독립적인 단위나 객체를 의미한다.
2. 객체 지향 패러다임의 주요 원칙
(1) 캡슐화(Encapsulation): 객체는 데이터(변수)와 그 데이터를 조작하는 함수(메서드)를 하나로 묶는다.
이를 통해 데이터의 추상화를 가능하게 하고, 외부에서의 접근을 제한한다.
(2) 상속(Inheritance): 하나의 클래스가 다른 클래스의 특성을 물려받는 메커니즘이고,
코드의 재사용성을 높이고, 중복을 줄이며, 유지보수를 편하게 한다.
(3) 다형성(Polymorphism): 하나의 메서드/클래스가 다양한 방식으로 동작하는 것을 말한다.
오버라이딩(Overriding)과 오버로딩(Overloading)은 다형성을 구현하는 일반적인 방법이다.
(4) 추상화(Abstraction): 복잡한 현실의 개체를 단순화된 모델로 표현하는 것이다.
핵심적인 개념, 기능에만 집중해 프로그램의 복잡성을 줄인다.
3. 그래서, 객체 지향 프로그래밍이 뭔데?
-> 객체와 객체간에 관계를 형성하고, 상호작용하게끔 코드를 작성하는 것이다!아래와 같이 객체와 메서드를 사용해,
객체와 객체간의 관계를 통해 상호작용하게끔 코드를 작성한다고 보면 될 것 같다.
*객체지향 패러다임으로 코드를 작성할 때, 코드의 실행순서를 주의하자!
연습 문제 1.
대중교통 탑승 프로그램을 만들어보자.
(1) Scanner 클래스를 통해 값을 입력받고,
(2) 입력받은 값을 통해 버스(100번, 200번)/지하철(1,2호선) 중에 하나를 선택하고
(3) 입력받은 값에 따라 참조변수 bus,subway의 현재 금액, 승객수를 더한 다음
(4) 결과값을 출력하라.
풀이 과정:
(1) import java.util.Scanner;를 통해 Scanner 라이브러리를 불러온다.
(2) 사용자에게 선택지를 알려주는 스크립트를 출력하고(System.out)
(3) 선택지(버스: 1 / 지하철: 2) 중 하나를 정수형 변수 choie에 입력받는다.
[if]
(4) 사용자가 입력한 수에 따라, 그 중에서 다시 버스의 번호를 고르게 한다. (100/200)
-입력받은 수를 choiceBus에 초기화하고, 버스의 번호에 따라 다시 안내 스크립트를 출력한다.
-Bus/Subway 클래스의 take 메서드를 호출해 요금/승객수를 초기화한다.
-초기화된 bus/subway 객체의 상태를 볼 수 있게 showInfo를 불러온다.
package basic.ch09; import java.util.Scanner; public class GoingToSchool2 { // 설계된 클래스를 가지고, 본인이 의도한 대로 실행의 흐름을 만들어보자. public static void main(String[] args) { // 1. 스캐너를 활용해, 1번을 누르면 버스를 태워서 실행의 흐름 만들기. // 2. 스캐너를 활용해, 2번을 누르면 지하철을 태워서 실행의 흐름 만들기. Bus bus1 = new Bus(100); Bus bus2 = new Bus(200); // 선언만 했음 Subway subway1 = new Subway(1); Subway subway2 = new Subway(2); Student s1 = new Student("티모", 100_00); Student s2 = new Student("가츠", 200_00); System.out.println("등교를 시작합니다!"); Scanner sc = new Scanner(System.in); System.out.println(" 메뉴를 선택하세요."); System.out.println(" 1번 버스 / 2번 지하철"); int choice = sc.nextInt(); // 버스를 탈 경우 if (choice == 1) { System.out.println("탈 버스를 선택하세요."); System.out.println(" 100번 / 200번 "); int choiceBus = sc.nextInt(); if (choiceBus == 100) { System.out.println(" 100 번 버스를 고르셨습니다."); System.out.println(" 운행을 시작합니다. "); System.out.println(" 1500원이 납부되었습니다. "); bus1.take(1500); System.out.println("-----------"); bus1.showInfo(); } else if (choiceBus == 200) { System.out.println(" 200 번 버스를 고르셨습니다."); System.out.println(" 운행을 시작합니다. "); System.out.println(" 1500원이 납부되었습니다. "); bus2.take(1500); System.out.println("-----------"); bus2.showInfo(); } } // 지하철을 탈 경우 if (choice == 2) { System.out.println("탈 지하철 호선을 선택하세요."); System.out.println(" 1호선 / 2호선 "); int choiceSubway = sc.nextInt(); if (choiceSubway == 1) { System.out.println(" 1호선을 고르셨습니다."); System.out.println(" 운행을 시작합니다. "); System.out.println(" 1200원이 납부되었습니다. "); subway1.take(1200); System.out.println("-----------"); subway1.showInfo(); } else if (choiceSubway == 2) { System.out.println(" 2호선을 고르셨습니다."); System.out.println(" 운행을 시작합니다. "); System.out.println(" 1200원이 납부되었습니다. "); subway2.take(1200); System.out.println("-----------"); subway2.showInfo(); } } } } // end of class
728x90반응형'Java > 기본 개념 및 클래스' 카테고리의 다른 글
[Java] 24. 접근 제어 지시자와 정보 은닉 (0) 2024.04.17 [Java] 23. 개념 응용하기: 함수와 메서드를 이용한 응용문제 (0) 2024.04.16 [Java] 21. 생성자: 기본 생성자와 사용자 정의 생성자 (0) 2024.04.16 [Java] 20. 함수, 인스턴스화, 메서드 연습 문제 (0) 2024.04.16 [Java] 19. 런타임 데이터 영역 (Run time data Area) (0) 2024.04.15 다음글이전글이전 글이 없습니다.댓글