자바 객체지향 연습문제 - jaba gaegchejihyang yeonseubmunje

당신은 주제를 찾고 있습니까 “객체 지향 프로그래밍 예제 – [자바 기초 26] 연습문제: 객체지향“? 다음 카테고리의 웹사이트 https://ru.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://ru.taphoamini.com/photos. 바로 아래에서 답을 찾을 수 있습니다. 작성자 홍팍 이(가) 작성한 기사에는 조회수 3,052회 및 좋아요 35개 개의 좋아요가 있습니다.

  • 객체 지향 프로그래밍 예제 주제에 대한 동영상 보기
  • d여기에서 [자바 기초 26] 연습문제: 객체지향 – 객체 지향 프로그래밍 예제 주제에 대한 세부정보를 참조하세요
  • 객체 지향 프로그래밍 예제 주제에 대한 자세한 내용은 여기를 참조하세요.
    • (Java) 21 – 객체 지향 예제 – 학생, 버스, 지하철 프로그램
    • (JAVA) 객체지향 프로그래밍 예제 & toString – madori4
    • 05장 객체지향 프로그래밍 – 점프 투 자바
    • 객체지향 프로그래밍 1 – 프로그래밍 언어들
    • 2.12 파이썬 객체지향 프로그래밍 – 데이터 사이언스 스쿨
    • [Java] 객체 간 협력, 교통수단 예제문제 / 2021.07.26
    • 연습문제 D – 객체지향 프로그래밍 – 클라우드스터딩
    • [Java] 객체지향의 특성과 예제 – H3ll0 부찌여
  • 주제와 관련된 이미지 객체 지향 프로그래밍 예제
  • 주제에 대한 기사 평가 객체 지향 프로그래밍 예제
  • (Java) 21 – 객체 지향 예제 – 학생, 버스, 지하철 프로그램
  • (JAVA) 객체지향 프로그래밍 예제 & toString
  • 05장 객체지향 프로그래밍
  • 객체지향 프로그래밍 1
  • 2.12 파이썬 객체지향 프로그래밍 — 데이터 사이언스 스쿨
  • [Java] 객체 간 협력, 교통수단 예제문제 / 2021.07.26
  • 연습문제 D – 객체지향 프로그래밍
  • [Java] 객체지향의 특성과 예제
  • 키워드에 대한 정보 객체 지향 프로그래밍 예제
  • 사람들이 주제에 대해 자주 검색하는 키워드 [자바 기초 26] 연습문제: 객체지향

객체 지향 프로그래밍 예제 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [자바 기초 26] 연습문제: 객체지향 – 객체 지향 프로그래밍 예제 주제에 대한 세부정보를 참조하세요

자바를 통한 객체지향 연습문제를 풀어봅시다.
도서구매: http://www.yes24.com/Product/Goods/104740689
강의자료: https://cloudstudying.kr/courses/61
실습문제: https://cloudstudying.kr/lectures/200#tab
강의문의: [email protected]
카톡ID: chaesam

객체 지향 프로그래밍 예제 주제에 대한 자세한 내용은 여기를 참조하세요.

(Java) 21 – 객체 지향 예제 – 학생, 버스, 지하철 프로그램

객체 지향 프로그래밍에 대해 배운 것들을 사용해 학생, 버스, 지하철 세 가지의 객체가 서로 상호작용하는 것을 프로그래밍 한 예제다.

+ 여기에 더 보기

Source: dogrushdev.tistory.com

Date Published: 3/29/2022

View: 9805

(JAVA) 객체지향 프로그래밍 예제 & toString – madori4

내가 정립한 객체지향 프로그래밍은 “세계의 축소판”이다. 여러가지 객체들이 각기 다른 도구(변수)들을 가지고 각자의 동작(메소드)를 해내는 것이다.

+ 자세한 내용은 여기를 클릭하십시오

Source: minwoohi.tistory.com

Date Published: 8/22/2022

View: 9185

05장 객체지향 프로그래밍 – 점프 투 자바

자바는 객체지향(Object Oriented) 프로그래밍 언어이다. 객체지향에는 클래스, 객체, 인스턴스, 상속, 인터페이스, 다형성, 추상화 등의 많은 개념들이 존재한다.

+ 더 읽기

Source: wikidocs.net

Date Published: 3/27/2022

View: 1848

객체지향 프로그래밍 1 – 프로그래밍 언어들

예를들어, 새로 합류한 개발자가 사용자의 적립금을 출력하는 로직을 작성하기 위해서 로직을 아래와 같이 고쳤다고 해보자. 이 예제는 프로그램으로써 …

+ 여기에 더 보기

Source: opentutorials.org

Date Published: 8/30/2022

View: 9160

2.12 파이썬 객체지향 프로그래밍 – 데이터 사이언스 스쿨

객체지향 프로그래밍에서 객체를 만들려면 객체를 바로 만들지 못하고 항상 클래스()라는 것을 만든 후에 그 클래스를 이용하여 객체를 만들어야 한다. 위 예제 …

+ 여기에 표시

Source: datascienceschool.net

Date Published: 4/3/2022

View: 9758

[Java] 객체 간 협력, 교통수단 예제문제 / 2021.07.26

이 예제에서는 학생이 버스, 지하철, 택시를 타고 가는 것을 객체 지향 프로그래밍해보겠다. (1) 학생 클래스 구현하기 학생 클래스는 “이름”, …

+ 여기에 표시

Source: cow-kite24.tistory.com

Date Published: 1/4/2021

View: 3396

연습문제 D – 객체지향 프로그래밍 – 클라우드스터딩

객체 지향 프로그래밍. OOP라고 한다. 프로그램을 객체의 조립으로 만드는 방식이다. OOP는 프로그램의 관리/재사용/확장에 좋다.

+ 여기에 자세히 보기

Source: cloudstudying.kr

Date Published: 1/20/2022

View: 1232

[Java] 객체지향의 특성과 예제 – H3ll0 부찌여

오늘은 JAVA 코딩을 통한 객체 지향 프로그래밍 (OOP : Object Oriented Programming) 의 특징을 알아볼 것이다! 특징은 상속, 다형성, 추상화, …

+ 자세한 내용은 여기를 클릭하십시오

Source: jin8371.tistory.com

Date Published: 10/3/2021

View: 9913

주제와 관련된 이미지 객체 지향 프로그래밍 예제

주제와 관련된 더 많은 사진을 참조하십시오 [자바 기초 26] 연습문제: 객체지향. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

자바 객체지향 연습문제 - jaba gaegchejihyang yeonseubmunje
[자바 기초 26] 연습문제: 객체지향

주제에 대한 기사 평가 객체 지향 프로그래밍 예제

  • Author: 홍팍
  • Views: 조회수 3,052회
  • Likes: 좋아요 35개
  • Date Published: 2018. 7. 4.
  • Video Url link: https://www.youtube.com/watch?v=A7xIi5KYICo

(Java) 21 – 객체 지향 예제 – 학생, 버스, 지하철 프로그램

객체 지향 프로그래밍에 대해 배운 것들을 사용해 학생, 버스, 지하철 세 가지의 객체가 서로 상호작용하는 것을 프로그래밍 한 예제다.

package classpart; public class Student { String name; int money; public Student(String name, int money) { this.name = name; this.money = money; } public void takeBus(Bus bus) { this.money -= 1000; bus.take(1); } public void takeSubway(Subway subway) { this.money -= 1500; subway.take(1); } public String getName() { return name; } public int getMoney() { return money; } public void showInfo() { System.out.println(this.getName()+” has “+this.getMoney()); } }

package classpart; public class Bus { int busNum; int intake = 0; int passenger; public Bus(int num) { this.busNum = num; } public void take(int passenger) { this.passenger++; this.intake+=1000; } public int getBusNum() { return busNum; } public int getIntake() { return intake; } public int getPassenger() { return passenger; } public void showInfo() { System.out.println(“Bus “+this.getBusNum()+” got “+this.getPassenger()+” passengers and earned “+this.getIntake()+” won”); } }

package classpart; public class Subway { int subwayNum; int intake = 0; int passenger; public Subway(int num) { this.subwayNum = num; } public void take(int passenger) { this.passenger++; this.intake+=1500; } public int getsubwayNum() { return subwayNum; } public int getIntake() { return intake; } public int getPassenger() { return passenger; } public void showInfo() { System.out.println(“Subway “+this.getsubwayNum()+” got “+this.getPassenger()+” passengers and earned “+this.getIntake()+” won”); } }

학생 클래스에서 학생이 버스나 지하철을 타는 메소드를 실행하면 다음과 같은 일이 일어난다.

학생 객체가 takeBus나 takeSubway 메소드를 실행하면 학생의 돈이 1000원 혹은 1500원 빠져나가고 Bus나 Subway타입의 객체의 take()메소드가 한 번 실행된다.

버스나 지하철 클래스 입장에서는 다른 객체에서 호출되어 실행되면 승객수가 1 증가하고 돈이 1000원이나 1500원이 올라간다.

package classpart; public class Test { public static void main(String[] args) { Student stu1 = new Student(“John”, 10000); Student stu2 = new Student(“Kelly”, 20000); Student stu3 = new Student(“Harry”, 14000); Bus bus100 = new Bus(100); Subway subway2 = new Subway(2); Subway subway7 = new Subway(7); stu1.takeBus(bus100); stu2.takeSubway(subway2); stu1.takeSubway(subway7); stu3.takeSubway(subway7); stu1.showInfo(); stu2.showInfo(); stu3.showInfo(); bus100.showInfo(); subway2.showInfo(); subway7.showInfo(); } }

실행결과

John has 7500

Kelly has 18500

Harry has 12500

Bus 100 got 1 passengers and earned 1000 won

Subway 2 got 1 passengers and earned 1500 won

Subway 7 got 2 passengers and earned 3000 won

지금까지 배운 객체와 클래스, 인스턴스, 생성자, 참조변수의 모든 개념을 사용하여 간단한 예제를 하나 구현해 보았다. 예제 코드에서는 서로 다른 세 개의 객체가 서로 영향을 주며 유기적인 작용을 한다. 이러한 프로그램을 구현해 봄으로써 객체지향 프로그래밍이 어떤 것인지 감을 잡을 수 있었다.

(JAVA) 객체지향 프로그래밍 예제 & toString

객체지향 프로그래밍은 무엇일까?

모든 데이터를 오브젝트(object;물체)로 취급하여 프로그래밍 하는 방법으로, 처리 요구를 받은 객체가 자기 자신의 안에 있는 내용을 가지고 처리하는 방식 ( 출처 : http://terms.naver.com/entry.nhn?docId=1128207&cid=40942&categoryId=32837 ) 이라고 구글링하면 나온다. 개인적으로 절대 와닿지 않을 정의라고 생각한다. 심지어 정의도 굉장히 많이 나오기 때문에 무엇이 맞는 것인지도 확실하게 하기 힘든 실정이다. 따라서 이해를 토대로 자신의 정의를 확립하는 것이 중요하다고 생각한다.

내가 정립한 객체지향 프로그래밍은 “세계의 축소판”이다. 여러가지 객체들이 각기 다른 도구(변수)들을 가지고 각자의 동작(메소드)를 해내는 것이다. 이때 객체들은 다른 객체와의 상호작용이 필수적이다. 상점에서 일어나는 일을 생각해보자. 존재할 수 있는 객체로 크게 구매자와 판매자로 나눌 수 있다. 구매자는 물건을 선택해 판매자에게 돈을 지불하고 물건을 구매한다. 또한 보유 상품의 갯수를 한개 더하는 역할을 수행한다고 가정하자.

판매자는 구매자에게 물건을 판매하고, 구매자로부터 가격을 지불받는다. 또한 재고의 갯수를 하나씩 줄인다고 가정하자. 이를 클래스로 표현할 수 있다.

구매자 변수 : 물건 갯수, 소지 금액

구매자 메소드 : 물건 갯수 하나 늘리기, 소지 금액 변경하기

판매자 변수 : 물건 갯수, 소지 금액

판매자 메소드 : 물건 갯수 하나 빼기, 소지 금액 변경하기

위의 두 객체가 상호작용 하는 공간을 메인 메소드인 것이다.

메인 메소드에서 구매자와 판매자 객체를 생성하고, 이들이 상호작용하는 클래스들은 다음과 같다.

05장 객체지향 프로그래밍

자바는 객체지향(Object Oriented) 프로그래밍 언어이다.

객체지향에는 클래스, 객체, 인스턴스, 상속, 인터페이스, 다형성, 추상화 등의 많은 개념들이 존재한다. 개념을 늘어놓고 설명을 해 나간다면 지루하기도 하고 도대체 어디에 써 먹을 수 있는건지 애매하기 때문에 여기서는 주로 예제위주의 설명으로 자바의 객체지향적 특징을 알아볼 것이다.

아마도 자바를 배우는 데 가장 큰 고비가 바로 이 객체지향 부분일 것이다. 생소하기도 하고 좀 어려운 내용이 많은데 너무 걱정하지는 말자. 이 부분만 잘 알고 넘어가면 탄탄대로가 나타나게 된다.

객체지향 프로그래밍 1

객체지향 프로그래밍

객체지향 프로그래밍(Object-Oriented Programming)은 좀 더 나은 프로그램을 만들기 위한 프로그래밍 패러다임으로 로직을 상태(state)와 행위(behave)로 이루어진 객체로 만드는 것이다. 이 객체들을 마치 레고블럭처럼 조립해서 하나의 프로그램을 만드는 것이 객체지향 프로그래밍이라고 할 수 있다. 다시말해서 객체지향 프로그래밍은 객체를 만드는 것이다. 따라서 객체지향 프로그래밍의 시작은 객체란 무엇인가를 이해하는 것이라고 할 수 있다.

객체지향 프로그래밍을 학습하는데 장애 중의 하나는 번역이다. Object를 번역한 객체는 현실에서는 거의 쓰지 않는 말이고, 머랄까 철학적인 느낌을 자아낸다. 그래서 객체지향 프로그래밍을 처음 접하는 입문자들은 객체지향 프로그래밍을 철학적인 탐구의 대상으로 파악하는 경향을 보이는데, 필자의 생각에 이것은 공부를 어렵게 할 뿐 도움이 되지 않는다. 쉽게 생각하자. 객체는 변수와 함수를 그룹핑한 것이다.

객체가 없다면

하나의 프로그램은 변수와 함수로 이루어져있다. 변수에 값을 담고, 연산을 함수로 묶는다. 그리고 이것들을 하나씩 실행하면서 프로그램이 동작하게 된다. 아래의 코드는 우항과 좌항을 더한 결과를 출력하는 매우 간단한 프로그램이다. 두개의 변수와 하나의 함수가 있고, 함수 sum을 호출하고 있다. 결과는 3이다.

left = 1 right = 2 def sum(): global left, right return left + right print sum()

이 정도 규모의 코드에서는 나쁜일이 일어날 가능성이 거의 없다. 하지만 프로그램은 점점 커지고 그에 따라 더 많은 사람이 코드의 작성에 참여하게 된다. 프로그램의 규모가 커지기 시작하면서 위의 코드가 약 1만줄에 이르는 방대한 코드가 되었다고 간주해보자. 코드의 복잡도는 기하급수적으로 늘어날 것이고 다양한 어려움에 봉착하게 될 것이다.

예를들어, 새로 합류한 개발자가 사용자의 적립금을 출력하는 로직을 작성하기 위해서 로직을 아래와 같이 고쳤다고 해보자.

이 예제는 프로그램으로써 좋은 예제는 아니다. 서로 다른 개발자가 right의 의미를 다르게 사용했을 때 발생할 수 있는 문제를 위한 인위적인 예제다

left = 1 right = 2 def sum(): global left, right return left + right right = 10000 def my(): global right return right print sum() #10001 print my() #10000

함수 my의 실행결과(10000)는 정상적으로 출력 되지만 함수 sum은 엉뚱한 값(10001)을 출력하고 있다. 이것은 나중에 합류한 개발자에 의해서 right의 의미가 계산식의 오른쪽항에서 사용자의 권리에 해당하는 금액으로 달라졌기 때문이다. 프로그램의 규모가 커지고 개발자가 많아질수록 이런 일이 빈번해질 것이다. 즉 서로 관련이 없는 로직인 sum과 my가 하나의 프로그램 안에서 동작하고 있기 때문에 서로에게 영향을 끼치고 있는 것이다.

객체화

객체지향 프로그래밍은 입문자에게는 다소 어려운 토픽이고, 객체지향이 무엇인가를 모른다고 프로그램을 만들지 못하는 것은 아니다. 따라서 객체지향 프로그램을 이해하는데 어려움이 있다면 객체지향적인 기법 없이 코드를 작성하면 된다. 그러다보면 차차로 다양한 객체들을 만나게 될 것이고 객체지향에 대해서 이해하기 좋은 상태가 될 것이다. 그 때 다시 도전해도 된다. 하지만 이 언어를 깊게 이해하고, 더 고도화된 프로그램을 만들기 위해서는 꼭 짚고 넘어가야 할 주제라는 점도 잊지 말자.

그럼 어떻게 해야할까? 이해를 돕기 위해서 비유를 들어보자. 컴퓨터에서 데이터를 보관하는 기본 단위는 파일이다. 파일이 있기 때문에 저장장치(하드디스크, SSD) 전체를 하나로 사용하는 것이 아니라 내용에 따라서 파일 단위로 쪼개서 사용할 수 있다. 마찬가지로 파일도 많아지면 관리의 어려움이 생긴다. 이것을 위해서 고안된 방법이 디렉토리(폴더)다. 즉 디렉토리를 이용해서 연관된 파일들을 그룹핑 함으로써 관리의 편의를 도모하게 되는 것이다.

객체란 디렉토리와 비슷한 목적으로 고안된 것이라고 생각하자. 연관되어 있는 변수와 메소드를 그룹핑해서 관리의 편의를 도모하는 것이 객체를 사용하는 이유다. (물론 훨씬 더 많은 이유가 있다)

다음 예제는 이전 예제를 객체화 시킨 것이다. 이 예제를 통해서 객체가 무엇인가를 알아보자.

class Calculator: def __init__(self, left, right): self._left = left self._right = right def sum(self): return self._left + self._right class User: def __init__(self, right): self._right = right def my(self): return self._right c = Calculator(1, 2) print c.sum() u = User(10000) print u.my()

클래스와 인스턴스

클래스란 객체의 설계도이고 인스턴스는 그 설계도에 따라서 만들어진 구체적인 제품이라고 비유 할 수 있다. 이 말의 의미를 실제 코드를 통해서 알아보자.

아래의 코드는 Calculator, User라는 이름의 클래스를 만들기 위한 것이다. 이 클래스는 객체 Calculator과 User에 대한 일종의 설계도라고 할 수 있다.

class Calculator:

class User:

익숙한 함수로 비유를 해보자. 함수도 설계도가 있다. 바로 def라는 키워드다. 함수의 설계도는 아래와 같은 형식을 가지고 있다.

def 함수명:

위의 내용은 함수를 정의 하는 것일 뿐 실제로 함수의 로직을 실행하기 위해서는 아래와 같이 함수를 호출해야 한다.

함수명()

객체도 마찬가지다. 객체를 실제로 사용하기 위해서는 아래와 같이 객체의 생성을 컴퓨터에게 지시해야 한다.

s = Calculator(1,2)

위의 코드는 변수 s에 객체 Calculator을 담아서 저장한다는 의미다. 위의 구문이 실행되면 변수 s를 이용해서 Calculator 객체를 사용할 수 있게 된다. 이렇게 생성된 객체를 인스턴스(instance)라고 부른다. 즉 객체의 설계도를 클래스라고 부르고, 이 설계도를 바탕으로 실제로 사용할 수 있게 만들어진 객체를 인스턴스라고 한다. 이것들을 포괄해서 객체라고 부르기도 한다. 객체라는 말의 의미는 맥락적으로 파악해야 한다.

앞으로 필자는 설계도를 클래스, 만들어진 객체를 인스턴스라고 구분해서 부르겠다.

생성자

Calculator()은 객체를 생성할 때 사용하는 규칙이다. 클래스의 이름()이 호출되면 클래스 내의 def __init__ 함수가 실행된다. 이 메소드를 생성자(constructor) 라고 부른다. 함수 __init__은 객체의 초기화를 위한 특수한 함수로 이 이름으로 클래스 내에 함수를 정의하면 클래스가 인스턴스화 될 때 실행된다. 이것은 최초로 한번 실행되기 때문에 뒤에서 배울 인스턴스 변수의 초기 값을 셋팅하거나, 데이터베이스 접속을 시도하는 것과 같이 기본적으로 필요한 작업을 할 때 사용된다.

생성자는 인자를 가질 수 있다. 위의 예제에서는 Calculator(1, 2)를 통해서 1과 2를 인자로 전달했다. 이것은 아래 Calculator 클래스 내의 아래 코드로 인해서 인자변수 left의 값으로 1, right의 값으로 2가 전달된다. 이 변수들의 값은 각각 변수 self._left, self._right에 담겨진다. 그럼 다음 절에서 ‘self’가 무엇인지 알아보자.

def __init__(self, left, right): self._left = left self._right = right

인스턴스 변수와 메소드

파이썬에서는 객체 안에서 정의된 함수를 메소드(method)라고 부른다. 그런데 파이썬의 메소드는 함수와는 조금 다른 특징이 있다. 위의 예제에서 정의한 메소드 __init__은 인자가 3개다. 아래 그림을 보자.

인스턴스가 생성될 때 첫번째 인자 1은 메소드 __init__의 두번째 인자의 값으로 전달 되었다. 좀 이상하다. 그럼 self는 무엇일까? 파이썬에서 메소드의 첫번째 인자는 그 메소드가 소속된 인스턴스를 가르키는 값이 들어가도록 약속되어 있다. 따라서 self._left는 인스턴스에 속해있는 변수라는 의미다.

첫번째 인자의 이름은 self가 아니라 다른 이름을 사용해도 된다. 하지만 관습적으로 self를 쓴다.

필자는 함수와 메소드를 구분해서 부르겠다.

메소드의 첫번째 인자(위의 코드에서는 self) 뒤에 .(점)을 붙여 따라오는 변수를 인스턴스 변수(instance variable)라고 부른다. 인스턴스에 소속된 변수라는 것이다. 위의 예제에서 left, right는 메소드 안에서만 유효한 지역변수고 self_.left, self._right는 인스턴스에서 소속된 인스턴스 변수이다. 다시말해서, 인스턴스 변수인 self._left, self._right는 인스턴스에 소속되어 있기 때문에 인스턴스를 통해서만 접근이 가능하다는 의미다. 덕분에 첫번째 예제 처럼 right의 의미를 다르게 사용해도 right가 속해 있는 객체가 다르기 때문에 문제가 발생할 확률이 현저하게 낮아진다.

python은 java와 같은 언어들과는 다르게 변수를 인스턴스 밖에서 보이지 않도록 하는 private 기능이 사실상 존재하지 않는다. 변수의 이름 앞에 _(언더바)를 두개 붙이면 외부의 객체에서 접근 할 수 없게 할 수 있지만 이것 역시 엄격한 의미로는 private 기능이 아니다. 본 내용은 이해하지 못해도 된다.

상태와 행위

앞에서 객체를 ‘연관된 상태와 행위의 그룹’이라고 정의했다. 그리고 상태를 변수, 행위를 메소드라고 생각하자고 했다. 이 말의 의미를 곱씹어보면서 아래를 보자.

c1 = Calculator(1, 2) c2 = Calculator(3, 4)

두개의 인스턴스를 만들었다. 각각의 인스턴스는 생성자로 인자1과 인자2가 전달 됐다. 인스턴스 c1의 상태는 아래와 같다.

self._left : 1

self._right : 2

아래는 c2의 상태다.

self._left : 3

self._left : 4

인스턴스 c1과 c2는 서로 다른 상태를 가지고 있는 것이다. 즉 인스턴스 변수의 값이 그 객체의 ‘상태(state)’가 되고, 메소드는 그 상태를 참고해서 ‘행위(behave)’를 하게 되는 것이다. 그 결과 c1.sum의 결과는 3이 되고, c2.sum의 결과는 7이 된다. 객체에 대해서 다시 정리해보자.

객체화란

설계도인 클래스를 바탕으로 서로 다른 상태(변수)에 따라 동일한 행동(메소드)을 하는 구체적인 제품인 인스턴스를 사용한 것이다.

상태나 행위라는 표현은 기억하지 않아도 된다. 중요한 것은 객체가 무엇인가를 이해하는 것이다.

마치며

이번 토픽에서는 객체가 무엇인가를 설명하기 위해서 많은 노력을 들였다. 하지만 객체지향 프로그래밍은 책 한권이 별도로 존재할 수 있을 정도로 그 내용이 깊고 방대하다. 이것을 다 알면 좋겠지만 그건 차차하면 된다. 이번 토픽에서 소개된 객체지향의 개념만 알고 있어도 Python에서 프로그래밍을 하는데 큰 도움이 될 것이다. 객체지향에 대한 더 많은 내용은 후속 강의를 통해서 다루기로 하겠다.

2.12 파이썬 객체지향 프로그래밍 — 데이터 사이언스 스쿨

class Character ( object ): def __init__ ( self ): self . life = 1000 self . strength = 10 self . intelligence = 10 def attacked ( self ): self . life -= 10 print ( “공격받음! 생명력 =” , self . life ) def attack ( self ): print ( “공격!” )

[Java] 객체 간 협력, 교통수단 예제문제 / 2021.07.26

728×90

* 참고자료 : Do it! 자바 프로그래밍 입문

객체 지향 프로그램은 객체를 정의하고 객체 간 협력으로 만든다. 객체의 협력이 어떻게 이루어지는지 알아보자.

<예제>

학생이 학교에 가기 위해 수행하는 여러 과정을 객체 지향 프로그램으로 만들 수 있다.

이 예제에서는 학생이 버스, 지하철, 택시를 타고 가는 것을 객체 지향 프로그래밍해보겠다.

(1) 학생 클래스 구현하기

학생 클래스는 “이름”, “가진 돈”을 멤버 변수로 가진다.

그리고 “버스를 탄다”, “지하철을 탄다”, “택시를 탄다”, “학생의 현재 정보를 보여준다”를 메서드로 가진다.

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 package cooperation; public class Student { public String studentName; // 학생 이름 public int money; // 가진 돈 // 매개변수로 학생이름, 가진 돈을 받는 생성자 public Student( String studentName, int money) { this .studentName = studentName; this .money = money; } // 버스를 탄다 public void takeBus(Bus bus) { bus.take( 1000 ); this .money – = 1000 ; // 버스요금 1000원을 지불 } // 지하철을 탄다 public void takeSubway(Subway subway) { subway.take( 1500 ); this .money – = 1500 ; // 지하철 요금 1500원을 지불 } // 택시를 탄다 public void takeTaxi(Taxi taxi) { taxi.take( 10000 ); this .money – = 10000 ; // 택시 요금 10000원 지불 } // 학생의 현재 정보를 출력하는 메서드 public void showInfo() { System . out . println (studentName + “님의 남은 돈은” + money + “입니다.” ); } } Colored by Color Scripter cs

(2) 버스 클래스 구현하기

버스 클래스는 “버스번호”, “승객수”, “버스 수입”을 멤버 변수로 가진다.

그리고 “승객이 버스에 탄 경우”, “버스의 현재 정보를 보여준다”를 메서드로 가진다.

학생 한명이 버스에 탄다면 버스 요금을 1000원 받고 승객 수가 한 명 증가한다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package cooperation; public class Bus { int busNumber; // 버스 번호 int passengerCount; // 승객 수 int money; // 버스 수입 // 매개변수로 버스 번호를 받는 생성자 public Bus( int busNumber) { this .busNumber = busNumber; } // 승객이 버스에 탈 때 public void take( int money) { this .money + = money; // 버스 요금 (매개변수 money)만큼 버스 수입이 증가 passengerCount + + ; // 승객 수 증가 } // 버스의 현재 정보 출력 public void showInfo() { System . out . println ( “버스 ” + busNumber + “번의 승객은 ” + passengerCount + “명이고, 수입은” + money + “입니다.” ); } } Colored by Color Scripter cs

(3) 지하철 클래스 구현하기

버스 클래스는 “지하철 노선”, “승객수”, “지하철 수입”을 멤버 변수로 가진다.

그리고 “승객이 지하철에 탄 경우”, “지하철의 현재 정보를 보여준다”를 메서드로 가진다.

학생 한명이 버스에 탄다면 지하철 요금을 1500원 받고 승객 수가 한 명 증가한다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package cooperation; public class Subway { String lineNumber; // 지하철 노선 int passengerCount; // 승객 수 int money; // 지하철 수입 // 매개변수로 지하철 노선을 받는 생성자 public Subway( String lineNumber) { this .lineNumber = lineNumber; } // 승객이 지하철에 탄다면 public void take( int money) { this .money = money; // 지하철 요금 (매개변수 money)만큼 지하철 수입이 증가 passengerCount + + ; // 승객 수 증가 } // 지하철 현재 정보 출력 public void showInfo() { System . out . println (lineNumber + “의 승객은 ” + passengerCount + “명이고, 수입은 ” + money + “입니다.” ); } } Colored by Color Scripter cs

(4) 택시 클래스 구현하기

택시 클래스는 “택시 번호”, “승객수”, “택시 수입”을 멤버 변수로 가진다.

그리고 “승객이 택시에 탄 경우”, “택시의 현재 정보를 보여준다”를 메서드로 가진다.

학생 한명이 버스에 탄다면 택시 요금을 10000원 받고 승객 수가 한 명 증가한다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 package cooperation; public class Taxi { int taxiNumber; // 택시 번호 int passengerCount; // 택시 승객 수 int money; // 택시 수입 // 매개변수로 택시 변수를 받는 생성자 public Taxi( int taxiNumber) { this .taxiNumber = taxiNumber; } // 택시에 승객이 타면 public void take( int money) { this .money + = money; // 택시 요금(매개변수 money)만큼 택시 수입 증가 passengerCount + + ; // 승객 수 증가 } // 택시 현재 정보 출력 public void showInfo() { System . out . println (taxiNumber + “의 승객은” + passengerCount + “명이고, 수입은 ” + money + “원이다.” ); } } Colored by Color Scripter cs

(5) 학생, 버스, 지하철, 택시 객체 협력하기

세 학생 James, Tomas, Edward가 있습니다. 이 세 학생은 각각 버스, 지하철, 택시를 타고 학교에 갑니다.

세 학생이 교통 수단을 이용한 후 각자가 가진 돈의 변화와 버스, 지하철, 택시의 수입을 알아보자.

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 package cooperation; public class TakeTrans { public static void main( String [] args) { // 학생 세 명 생성 Student studentJames = new Student( “James” , 5000 ); Student studentTomas = new Student( “Tomas” , 10000 ); Student studentEdward = new Student( “Edward” , 20000 ); Bus bus100 = new Bus( 100 ); // 노선 번호가 100인 버스 생성 studentJames.takeBus(bus100); // James가 100번 버스를 탐 studentJames.showInfo(); // James의 정보 출력 bus100.showInfo(); // bus의 정보 출력 Subway subwayGreen = new Subway( “2호선” ); // 노선 번호가 2호선인 지하철 생성 studentTomas.takeSubway(subwayGreen); // Tomas가 2호선을 탐 studentTomas.showInfo(); // Tomas의 정보 출력 subwayGreen.showInfo(); // subway의 정보 출력 Taxi taxi4534 = new Taxi( 4534 ); // 택시 번호가 4534인 택시 생성 studentEdward.takeTaxi(taxi4534); // Edward가 4534번 택시를 탐 studentEdward.showInfo(); // Edward의 정보 출력 taxi4534.showInfo(); // taxi의 정보 출력 } } Colored by Color Scripter cs 학생들이 교통수단을 타는 과정을 그림으로 나타내 보았다. 실행결과 :

728×90

연습문제 D – 객체지향 프로그래밍

연습문제 D – 객체지향 프로그래밍

# 연습문제 D – 객체지향 프로그래밍 ## 09 클래스와 객체 — ### 이론 요약 ![클라우드스터딩-자바-클래스와-객체-요약](https://i.imgur.com/zi6B90d.png) #### 객체 지향 프로그래밍 – OOP라고 한다. 프로그램을 객체의 조립으로 만드는 방식이다. – OOP는 프로그램의 관리/재사용/확장에 좋다. #### 클래스 vs 객체 – 클래스는 객체를 만들기 위한 설계도이다. – 객체의 또 다른 표현으로는 인스턴스(instance)가 있다. – 때문에 클래스로 객체를 만드는 것을 “인스턴스화”라고 한다. #### 클래스 설계 및 구현 – 클래스는 필드(상태)와 메소드(동작)로 구성된다. – 클래스를 도식화한 것을 “클래스 다이어그램”이라 한다. – 클래스 다이어그램 보고 코드를 작성할 줄 알아야 한다. ### 실습 리뷰 정사각형 객체의 넓이를 구하는 예. “` public class SquareTest { public static void main(String[] args) { /* 1. 객체 생성 */ Square s = new Square(); /* 2. 필드 초기화(값 변경) */ s.length = 4; /* 3. 결과 출력 */ System.out.printf(“한 변의 길이가 %d인 정사각형의 넓이: %d”, s.length, s.area()); } } /* 4. 정사각형 클래스 구현 */ class Square { int length; // 길이 // 넓이 반환 int area() { return length * length; } } “` ## 10 생성자 — ### 이론 요약 ![클라우드스터딩-자바-생성자-요약](https://i.imgur.com/pMmmkPn.png) #### 생성자 – 생성자는 객체를 만드는 특별한 메소드다. – 생성자는 역할은, 객체 생성과 필드 초기화이다. #### 생성자 특징 – 생성자는, 호출과 정의로 나뉜다. – 생성자명은, 클래스명과 같아야 한다. – 리턴 타입은 표기하지 않는다. (void 아님) ### 실습 리뷰 마린과 메딕 객체의 상호 작용 “` public class Starcraft { public static void main(String[] args) { // 객체 생성 Marine marine = new Marine(“마린”, 80); Medic medic = new Medic(“메딕”, 60); // 마린 스팀팩 버프~ marine.stimpack(); // 메딕의 치료 -> 마린 medic.heal(marine); } } // 마린 클래스 class Marine { // 필드 String name; int hp; // 생성자 public Marine(String name, int hp) { this.name = name; this.hp = hp; } // 메소드 public void stimpack() { System.out.printf(“[%s]의 스팀팩! HP: %d -> “, name, hp); hp -= 10; System.out.printf(“%d

“,hp); } } // 메딕 클래스 class Medic { // 필드 String name; int hp; // 생성자 public Medic(String name, int hp) { this.name = name; this.hp = hp; } // 메소드 public void heal(Marine target) { System.out.printf(“[%s]의 치유! %s HP(%d -> “, name, target.name, target.hp); target.hp += 10; System.out.printf(“%d)

“, target.hp); } } “` ## 11 레퍼런스 변수와 static — ### 이론 요약 ![클라우드스터딩-자바-레퍼런스와-static-요약](https://i.imgur.com/8SjXUXO.png) #### 레퍼런스 변수 – 레퍼런스 변수란, 객체를 가리키는 변수다. – 기본형 변수는 값을 직접 저장하나, 레퍼런스 변수는 객체의 위치를 가리킨다. #### static 키워드 – static 키워드는 필드와 메소드에 적용될 수 있다. #### 클래스 변수 – 클래스 변수란, 클래스 영역에 존재한다. – 인스턴스 변수란, 객체 내부에 존재한다. #### 인스턴스 변수 – 클래스 메소드란, 주체 객체가 없이 수행되는 메소드다. – 인스턴스 메소드란, 주체 객체가 실행하는 메소드다. ### 실습 리뷰 두 점 사이의 거리 “` public class PointTest { public static void main(String[] args) { // 객체 생성 Point p1 = new Point(0, 0); Point p2 = new Point(3, 4); // 거리 계산 double dist = Point.distance(p1, p2); // 결과 출력 System.out.printf(“두 점 A%s, B%s 사이의 거리: %.2f”, p1.toStr(), p2.toStr(), dist); } } class Point { int x; int y; Point (int _x, int _y) { x = _x; y = _y; } String toStr() { return String.format(“(%d, %d)”, x, y); } static double distance(Point p, Point q) { double dX = p.x – q.x; // x좌표의 변화량 double dY = p.y – q.y; // y좌표의 변화량 return Math.sqrt((dX * dX) + (dY * dY)); } } “` ## 확인하기 —

## 도서구매

자바 객체지향 연습문제 - jaba gaegchejihyang yeonseubmunje

[Java] 객체지향의 특성과 예제

오늘은 JAVA 코딩을 통한 객체 지향 프로그래밍 (OOP : Object Oriented Programming) 의 특징을 알아볼 것이다!

특징은 상속, 다형성, 추상화, 캡슐화, 정보은닉이 있으며 이것에 대한 간단한 예제를 실습해 보았다.

< 객체 지향 언어의 특징 >

상속 (JAVA는 단일상속만을 지원) : 기존의 클래스를 이용해서 새로운 클래스를 만들어 변수와 메서드를 추가로 정의한 것 (객체들 사이의 계층적 구조를 이룰 수 있음) **상속은 코드를 간결하게 하여 코드의 재사용성을 높이는 객체지향의 핵심 개념**

다형성 : 하나의 인터페이스를 이용해 서로 다른 구현을 제공함 메서드 오버로딩 : 한클래스 안에 같은 이름의 메서드를 여러개 정의하면서, 그 인자의 갯수나 유형을 자르게 해놓은 형태 메서드 오버라이딩 : 상속 관계에 있는 하위 클래스가 상위 클래스가 가지고 있는 메서드를 재정의 하는 것 (재정의된 메서드가 선언된 형태는 상위 클래스에서 선언된 것과 같음)

추상화 : 현실 세계에 존재하는 다양한 객체들의 공통된 특성을 모아 일반화해 놓은것

캡슐화 : 변수와 메서드를 하나의 추상화된 클래스로 묶는 과정을 의미함 (객체가 제공하는 메서드를 통해 객체를 이용하고, 데이터가 실제로 어떻게 처리되는지는 알 필요 없음) 정보 은닉 캡슐화된 변수나 메서드를 선택적으로 공개하거나 숨길 수 있음

# 코드

// 상속 extends public class Car { String name; int currentGear; public void changeGrear(int gear) { System.out.println(” 기어를 “+ gear +”단으로 변경한다.”); currentGear = gear; } public String get_CurrentState() { return name + “의 현재 기어 상태:” + currentGear; } } public class Taxi extends Car { int fare; int passenger; }

// 다형성 // 1.오버라이딩 >> 출력 : 기어를 2 변경후 고정한다. public class MyTaxi extends Taxi { public void changeGrear(int gear) { System.out.println(” 기어를 ” +gear+” 변경후 고정한다”); currentGear = gear; } public static void main(String[] args) { MyTaxi taxi = new MyTaxi(); taxi.name = “24바 3982″; taxi.currentGear = 1; taxi.fare = 6200; taxi.passenger = 2; taxi.changeGrear(2); taxi.get_CurrentState(); } }

// 추상화 (abstract) abstract class Car { public void CurrentState () { System.out.println(” 움직이고 있습니다.”); } } class Bus extends Car { String color; public void Color(String color) { System.out.println(“버스는 “+color+” 입니다.”); } } public class MyBus { public static void main(String[] args) { Bus bus = new Bus(); bus.Color(“초록색”); bus.CurrentState(); } }

// 캡슐화 (은닉 private) public class Car { public String name; private int currentSpeed; public void start_Engine() { System.out.println(name+”의 시동을 켠다.”); currentSpeed = 1; } private int CurrentSpeed() { currentSpeed = currentSpeed * 10; return currentSpeed; } public String get_CurrentSpeed() { return name + “의 속도는 “+ CurrentSpeed(); } }

# 구현모습

자바란 이런것이구나..ㅎㅎ 신기하당

앞으로 더 공부해야겠다!

키워드에 대한 정보 객체 지향 프로그래밍 예제

다음은 Bing에서 객체 지향 프로그래밍 예제 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

  • 자바
  • 프로그래밍
  • 입문
  • 실습
  • 연습
  • 문제
  • 객체지향
  • OOP
  • 자바 객체지향 프로그래밍
  • 자바 static 메소드
  • 자바 클래스 구현
  • 자바 객체 생성
  • 자바 생성자
  • 자바 클래스 메소드

[자바 #기초 #26] #연습문제: #객체지향


YouTube에서 객체 지향 프로그래밍 예제 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [자바 기초 26] 연습문제: 객체지향 | 객체 지향 프로그래밍 예제, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.