• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (780)
      • 백준 (0)
      • 일본어 (0)
        • 모모타로TMC (0)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (7)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [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
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바