본문 바로가기

diary/codestates (be39)

05/10/22 객체에 관해서~

객체

보고, 느끼고, 인지할 수 있는 모든 것
즉, 자신의 속성을 가지면서 식별이 가능한 것

객체 지향 프로그래밍

객체들을 조립해서 완성된 프로그램을 만드는 기법

클래스

객체를 정의한 설계도 또는 틀이라고 볼 수 있다.
객체는 클래스에 정의되어 설계된 내용 그대로 생성된다. (인스턴스화)
**주의! 클래스는 객체를 생성하는 데 사용되는 것으로 객체 그 자체가 아니다.

객체 vs. 인스턴스

객체: 클래스로 구현한 대상
인스턴스: 메모리에 할당된 데이터
>> ???

What is the difference between an Instance and an Object?

What is the difference between an Instance and an Object? Is there a difference or not?

stackoverflow.com

>> There's no real significant difference that should consume too much of your time. ... I have never met anyone in my career that would be picky and spend a half-hour trying to point out the differences because there's really none. Time can be better spent on other development efforts.
>> 앗 ㅇㅋㅇㅋ 객체는 조금 더 큰 개념으로 인스턴스를 아우르고, 인스턴스는 실제 클래스로 생성된 physical thing 정도 라고 이해하고 넘어가자!

+) 클래스와 객체

Class

a way that we can define our own custom data type

학생 데이터가 필요하다. 이름도 나이도 전공도 학점도 받고 싶은데 String이나 int/double 만 사용해서는 받을 수가 없다ㅠ 어케 좋은 방법이 없을까요? >> 클래스~~

1) Student 클래스

public class Student {
    String firstName;
    String lastName;
    double gpa;
    String major;
    int age;
    boolean onProbation;
}

원하는 조건을 받을 수 있는 Student 클래스를 생성했다.

2) App 클래스

public class App {
    public static void main(String[] args) {
        Student myStudent = new Student();

        myStudent.firstName = "rom";
        myStudent.lastName = "yang";
        myStudent.major = "Business";
        myStudent.gpa = 1.0;
        myStudent.age = 500;
        myStudent.onProbation = false;

        System.out.println(myStudent.firstName);
    }
}

Student 클래스로부터 객체를 생성하고 정보를 입력해서 원하는 Student 데이터를 만들었다!
actually create a student
when to use? when we want to create an actual student/ and want to gitve different values

Object

an instance of a class
actually has values inside it

필드

클래스에 포함된 변수로 객체의 속성을 정의
***
클래스 변수: static
인스턴스 변수: static이 붙지 않은 변수
→ 클래스+인스턴스 변수=멤버 변수
지역 변수: 메서드 내에 포함된 모든 변수 > 메서드 블록에서만 사용 가능하며 메서드 종료시에 소멸된다
→ 선언 위치에 따라 종류가 결정되며 각자 다른 유효 범위를 갖는다.

초기값!

지역 변수: 직접 초기화하지 않으면 오류가 발생한다
인스턴스 변수: 직접적으로 초기화하지 않아도 강제로 초기화가 이루어진다
**지역 변수는 선언시 반드시 초기화

메서드

특정 작업을 수행하는 일련의 명령문들의 집합

접근제어자 반환타입 메서드명(매개변수){}

메서드 오버로딩

1. 메서드의 이름이 같아야 한다
2. 매개변수의 개수 또는 타입이 달라야 한다
** 주의! 반환 타입은 오버로딩의 성립에 영향을 주지 못한다!


🐑 Daily 회고

1. jvm jvm jvm memory structure

  • 추가 공부+포스팅하려고 백년 전에 들은 강의 재탕했다
  • 20년 3월의 교수님: 4월달이 되면 강의실에서 수업을 할 수 있을 테니까~(아닌데요) 3월16일부터 27일까지 온라인으로 진행(아니었습니다ㅠㅠㅠ)
  • 근데 막상 강의도 보고 열심히 ref도 찾아봤는데 너무 추가적인 내용이 많아서 객체 관련만으로 정리하자니 내용이 부실해져서 딱히 또 정리해야 되나 싶고, 다 포함해서 정리하자니 내가 멍청하다 에고
  • 암튼 당장 필요한 부분은 이해했으니까 심화 부분은 추후 머리가 덜 멍청해지면 정리해보기로 한다

2. 스케줄 확인을 잘하자

  • 아니 오늘 진도까지 정리하려다가 생성자까지 넣어서 하는 게 깔끔할 것 같아서 내일 같이 하려고 보니까 블로깅 시간이 있다...................................................................................... 실화?
  • 그래도 좋은 게 좋은 거다 ㅠ 블로깅 시간 많이 남으면 더 까먹기 전에 빨리 코플릿 배열 푼 거 정리해놓자

3. TIL은 힘 빼는 중

  • 개념 정리 부분은 글을 따로 빼는 게 깔끔한 것 같아서 TIL은 간단하게 노트 정리한 내용 올리는 정도로만 하기로 했다. 언제 또 마음 바뀔지 모르는데 아무튼 일단은.

총평 ⭐

오늘 뭔가 막 놀지는 않았는데 이상하게 계속 집중이 안 돼서 효율이 엄청엄청 떨어졌다. 평소 효율의 절반도 못 내면서 종일 앉아 있기만 한 것 같다. 차라리 놀기라도 했으면 억울하진 않을 것 같다. 게임 한두판씩 하고 싶은데 한번 게임하면 중독자 수준으로 해버려서 손을 못 댄다. 자제력아 일을 해! ㅠ 이번주 벌써 좀 힘든데 주말에 하루 놀 생각으로 컨디션 좀 올리면서 해야겠다. 일단은 공연이 보고 싶다........... 아님 전시회라도