본문 바로가기

java 공부/객체지향 with 김영한

(10)
[실전자바-기본편]10. 절차 지향 프로그래밍 프로그래밍 방식 절차 지향 프로그래밍실행 순서를 중요하게 여긴다.프로그램의 흐름을 순차적으로 따르며 처리하는 방식. "어떻게" 중심객체 지향 프로그래밍객체를 중요하게 여긴다.실제 세계의 사물이나 사건을 객체로 보고 이러한 객체 간 상호작용을 중심으로 프로그래밍. "무엇을" 중심 ※중요한 차이-> 절차 지향은 데이터와 해당 데이터에 대한 처리 방식이 분리-> 객체 지향은 데이터와 그 데이터에 대한 행동(메서드)이 하나의 객체 안에 포함  둘의 차이를 코드를 보며 이해해보자.  음악 플레이어 만들기 _ 절차 지향 음악 플레이어를 켜고, 끄는 동작, 볼륨 높이고 낮추는 동작을 순서대로 진행한다. MusicPlayerMainpublic class MusicPlayerMain { public static v..
[실전자바-기본편]9. 실습하기_2 배웠던 내용으로 이전에 작성했던 코드를 효율적으로 리팩토링 해보자이전에 작성했던 간단한 주문 관리 코드를 리팩토링 할 것이다. 기존 코드 ProductOrderpublic class ProductOrder { String productName; int price; int quantity;}주문 클래스에 물건명, 가격, 수량을 작성해주었다. ProductOrderMainpublic class ProductOrderMain { private static void main(String[] args) { // TODO Auto-generated method stub ProductOrder[] orders = new ProductOrder[3]; ProductOrder order1 = ne..
[실전자바-기본편]8. NullPointerException 택배 보낼 때 주소지 없이 발송한다면?참조값 없이 객체를 찾아가면 어떤 문제가 발생할까? 이 경우 NullPointerException라는 예외가 발생한다. NullPointerException : 이름 그대로 null을 가리킨다는 뜻인데, null에다가 점을 찍으면 발생한다.public static void main(String[] args) { Data data = null; data.value = 10; //NullPointerException 예외 발생 System.out.println("data = " + data.value); }data에 null이 들어있는 상황에서 data.value로 접근하여 값을 넣으려고 하였다. 출력 결과안에 참조값이 없기 때..
[실전자바-기본편]7. 변수와 초기화 변수의 종류멤버 변수(필드) : 클래스에 선언 지역 변수 : 메서드에 선언, 매개변수도 지역 변수의 종류 변수의 초기화멤버 변수 : 자동초기화지역 변수 : 수동 초기화지역변수는 항상 직접 초기화를 해야한다.  public class InitData { int value1; //초기화 하지 않음 int value2 = 10;//10으로 초기화}한 변수는 초기화를 하지 않았고, 한 변수는 10으로 초기화를 하여 출력해보았다.public class InitMain { public static void main(String[] args) { InitData data = new InitData(); System.out.println("value1 = " + data.val..
[실전자바-기본편]6. 기본형과 참조형_2 기본형과 참조형의 메서드 호출 ※자바는 항상 변수의 값을 복사해서 대입한다.※ 메서드 호출 시에도 파라미터도 결국 변수라, 복사되어 전달된다.  기본형 메서드 호출메서드를 호출하는 코드를 먼저 살펴보자. public static void main(String[] args) { int a = 10; System.out.println("메서드 호출 전: a = " + a); changePrimitive(a); System.out.println("메서드 호출 후: a = " + a); } static void changePrimitive(int x) { x = 20; }먼저 어떻게 출력될지 고민해보자. a가 처음에 10으로 지정되어..
[실전자바-기본편]5. 기본형과 참조형_1 변수의 데이터 타입을 크게 보면 기본형과 참조형으로 분류된다. 기본형(Primitive Type) :  int, long 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입소문자로 시작한다. 개발자가 새로 정의할 수 없다.참조형(Reference Type) : Person person1, int[] person 와 같이 데이터에 접근하기 위한 주소를 저장객체는 " . "(dot)을 통해서 메모리 상에 생성된 객체를 찾아가서 사용배열은 [ ]를 통해서 메모리 상에 생성된 배열 을 찾아가서 사용 클래스는 모두 참조형이다. 클래스는 대문자로 시작한다기본형과 참조형의 계산기본형은 들어있는 값 그대로 계산 가능참조형은 들어있는 참조값으로만 계산안됨. 주소지에 가야 실체가 있음// 기본형 계산int a = 1..
[실전자바-기본편]4. 실습하기_1 Q. 영화 리뷰 관리하기 요구 사항 MovieReview 클래스영화 제목리뷰 내용MovieReviewMain 클래스 내에 main() 메서드를 포함해서 리뷰 정보를 선언하고 출력영화 리뷰 정보 선언영화 리뷰 정보 출력 MovieReview 클래스public class MovieReview { String title; String review;} MovieReviewMain 클래스public class MovieReviewMain { public static void main(String[] args) { MovieReview inception = new MovieReview(); inception.title = "인셉션"; inception.revie..
[실전자바-기본편]3. 클래스 배열 도입 클래스를 사용하면서 객체를 생성하고 정보를 저장하는 것이 수월해졌다. 그런데 출력부분을 보면,System.out.println("이름:" + Persons[0].name + " 나이:" + Persons[0].age + " 몸무게:" + Persons[0].weight);System.out.println("이름:" + Persons[1].name + " 나이:" + Persons[1].age + " 몸무게:" + Persons[1].weight);매번 새로운 정보가 추가될 때 마다 출력하는 부분도 함께 추가해야 한다.이를 위하여 배열을 사용해서 특정 타입을 연속한 구조로 묶어서 편리하게 관리해보자. 클래스 배열package class1;public class ClassStart4 { public s..