변수의 종류선언 위치에 따른 변수의 종류변수는 선언되는 위치에 따라 다음과 같이 세 가지로 구분됩니다.지역 변수 : 메서드 내부에서 선언되는 변수로, 해당 메서드가 실행될 때 생성되고 종료 시 소멸됩니다.인스턴스 변수 : 클래스의 인스턴스가 생성될 때마다 각각의 객체에 따로 할당되는 변수로, 객체의 상태를 나타냅니다.클래스 변수 : static 키워드로 선언된 변수로, 클래스의 모든 인스턴스가 공유하는 변수입니다.public class Car { // 인스턴스 변수 String color; // 클래스 변수 static int totalCars; public Car(String color) { this.color = color; totalCars..
객체지향 프로그래밍에서 생성자(Constructor)와 객체 초기화는 객체를 생성하고 초기 상태를 설정하는 중요한 개념입니다. 객체를 만들 때 반드시 호출되는 생성자는 객체의 초기 상태를 정의하고, 초기화 블럭은 객체의 필드를 초기화하는 또 다른 방법입니다. 생성자와 초기화 블럭을 잘 활용하면 객체를 더 효율적이고 안정적으로 생성할 수 있습니다.변수의 초기화명시적 초기화변수를 선언할 때 기본값을 설정하는 것을 명시적 초기화라고 합니다. 가장 직관적이고 간단한 초기화 방법입니다.public class Car { String color = "White"; String manufacturer = "Unknown"; int speed = 0;}초기화 블럭초기화 블럭은 {} 안에 초기화 코드를 작..
캡슐화(Encapsulation)란?캡슐화는 객체지향 프로그래밍의 중요한 개념으로, 객체 내부에서 데이터를 보호하고 외부에서 직접 접근할 수 없도록 막습니다. 이 과정에서 객체 내부 구현이 변경되더라도 외부 코드에 영향을 주지 않도록 해서, 유지보수성을 크게 향상시킬 수 있습니다. 즉, 데이터의 무결성 보호와 유연한 코드 수정이 주요 목적입니다.캡슐화의 주요 목적데이터의 직접적인 접근을 제한합니다.데이터를 수정하거나 가져올 때 검증 로직을 추가해서 안전하게 처리합니다.외부에 객체의 내부 구현을 숨기고, 필요한 정보만 노출해서 코드의 유연성을 높입니다.접근 제어자와 정보 은닉접근 제어자는 정보 은닉과 캡슐화를 구현하는 기본 수단입니다. 정보 은닉은 불필요한 데이터 노출을 막고, 객체의 외부에서 특정 속성에..
다형성(Polymorphism)의 개념과 원리다형성은 객체지향 프로그래밍의 핵심 개념 중 하나로, 동일한 메서드 호출이 객체의 실제 타입에 따라 다르게 동작할 수 있도록 합니다. 이를 통해 다양한 객체를 일관된 방식으로 처리할 수 있으며, 코드의 유연성과 확장성을 극대화할 수 있습니다.다형성의 구현 방식컴파일 타임 다형성 : 메서드 오버로딩을 통해 구현됩니다. 메서드 이름은 동일하지만 서로 다른 매개변수를 받는 여러 메서드를 정의하며, 호출 시점에 적합한 메서드가 선택됩니다.public class MathUtil { public int add(int a, int b) { return a + b; } public double add(double a, double b) { ..
추상화(Abstraction)란?추상화는 복잡한 현실 세계의 객체를 프로그램에서 다루기 쉽도록 필수적인 속성과 기능만을 남기고, 세부 사항은 감추는 과정입니다. 객체의 중요한 속성에 집중하고, 불필요한 세부 사항을 감춰서 설계의 간결함을 유지할 수 있습니다. 이는 객체지향의 중요한 개념 중 하나로 프로그램의 유지보수성을 높이고, 향후 확장성을 고려한 설계를 가능하게 합니다.추상 클래스 개념 및 작성 방법추상 클래스는 공통적인 속성이나 메서드를 정의하는 동시에, 일부는 구체적으로 구현하지 않고 하위 클래스에서 구현을 강제하는 클래스입니다. 추상 클래스는 직접 인스턴스를 생성할 수 없고, 반드시 상속받은 자식 클래스에서 구체화되어야 합니다. 추상 클래스는 abstract 키워드를 사용해서 정의합니다. 추상 ..
상속이란?상속(Inheritance)은 객체지향 프로그래밍에서 핵심 개념 중 하나로, 하나의 클래스가 다른 클래스의 속성과 메서드를 물려받아 재사용할 수 있는 기능입니다. 이를 통해 코드의 중복을 줄이고 유지보수를 쉽게 할 수 있으며, 다형성을 구현할 수 있는 기초가 됩니다.상속의 개념과 장점상속은 기존의 클래스(부모 클래스 또는 슈퍼 클래스)의 속성 및 메서드를 새로운 클래스(자식 클래스 또는 서브 클래스)가 상속받아 사용하는 것입니다. 자식 클래스는 부모 클래스의 모든 멤버(필드와 메서드)를 물려받으며, 이를 활용해 새로운 기능을 추가하거나 기존 기능을 수정(오버라이딩)할 수 있습니다.// 부모 클래스public class Animal { String name; void eat() { ..
📝 절차지향 프로그래밍이란?절차지향 프로그래밍은 프로그램을 순차적인 절차로 구성하는 방법입니다. 이 방식은 주로 기능 중심으로 코드를 작성하며, 각 함수가 순차적으로 실행됩니다. 프로그램의 흐름을 제어하는 함수들을 통해 작업을 처리하는 방식입니다. 🔑 절차지향의 주요 특징순차적 처리 : 프로그램이 위에서 아래로 순서대로 실행됩니다.함수 중심 : 코드의 기능을 수행하는 독립적인 함수로 구성됩니다.데이터와 함수의 분리 : 함수와 데이터가 서로 독립적인 형태로 존재합니다. 🖥 절차지향 방식의 예시int add(int a, int b) { return a + b;}int main() { int result = add(5, 10); printf("Result: %d\n", result); ..
함수(Function)와 메서드(Method) 두 단어의 차이에 대해 정리한 글입니다. 우선, 함수와 메서드는 프로그래밍에서 기능 단위의 코드 블록입니다. 그러나, 일반적으로 함수와 메서드는 객체지향 프로그래밍과 절차지향 프로그래밍에 따라 약간의 차이가 있습니다. 함수(Function)란? 함수는 하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합입니다. 함수는 절차지향 프로그래밍에서 사용되며, 데이터를 입력받아 처리하고 결과를 반환합니다. 함수는 프로그램의 구조화와 코드 재사용을 위해 사용되기 때문에 여러 곳에서 호출되어 사용이 가능합니다. 하나의 기능이 하나의 함수로 구현되어 있기 때문에 디버깅 작업이 편리해집니다. 메서드(Method)란? 메서드는 객체지향 프로그래밍에서 사용되..
자 기다리고 기다려주신 2편이 따끈따끈하게 준비해 봤습니다..! 만약 재밌었다면.. 1편도 읽어주세요.. 몇 분 안 계셨지만 나름 반응이 뜨거웠다는.. (부끄럽지만 ㅠ.ㅠ) 2023.11.26 - [Tutoring] - [튜터링] 객체지향과 TDD 기법 E.01 (자기소개 및 객체지향 라이브 코딩) [튜터링] 객체지향과 TDD 기법 E.01 (자기소개 및 객체지향 라이브 코딩) 최근 객체지향의 사실과 오해라는 책을 읽기 시작하면서 인프런 커뮤니티를 구경하던 도중에 TDD와 객체지향 무료 튜터링 글이 올라온 것을 봐버렸다. 마감!!! https://www.inflearn.com/studies/1074683/tdd%E gyunny.tistory.com 간단하게 요약하자면, 멘토님과 멘티들의 간단한 객체지향 ..
최근 객체지향의 사실과 오해라는 책을 읽기 시작하면서 인프런 커뮤니티를 구경하던 도중에 TDD와 객체지향 무료 튜터링 글이 올라온 것을 봐버렸다. 마감!!! https://www.inflearn.com/studies/1074683/tdd%EC%99%80-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%EB%AC%B4%EB%A3%8C-%ED%8A%9C%ED%84%B0%EB%A7%81 TDD와 객체지향 무료 튜터링 - 인프런 | 스터디 마감 됐습니다. 안녕하세요! 지난 모임에 이어 2기 모집 합니다! '골프 퍼팅 연습을 하는데, 공이 어디로 가는지 전혀 보지 않고 1,000개의 공을 친다고 생각해 보죠. 이건 도대체 뭘 연습하고 있 www.inflearn.com 마침 개발을 하면서 객체지..