Quick OOP question...

If I make a class, and then make the the class an object in another class. Then do stuff, and access vars and such. If I need to use some vars from the class I made the object from(use them from a different class), do I make a new object for that class?
It's confusing so here's an example:
class Yo{
int sup = 5;
class ObjectThing{
Yo y = new Yo();
y.sup++;
class ObjectThingy{
Yo y = new Yo();
//Now, do I make another object of the same thing, is that the 'right' way to do it, or is there a better way? Its just now I have 2 Yo y = new Yo() objects.
y.sup++;
}

Not if you want to adhere to the OO principle of data hiding:
class Yo
  private int a;
  public int a()
    return a;
  public void a( int in )
    a = in;
class Foo
  Yo y = new Yo();
  // do this in a constructor
  public Foo()
    y.a( y.a() + 1 );  // does the same thing as add 1 to y's a
}see how Foo cannot directly access Yo's a variable? That is data hiding
if you want to allow the outside world to access it Yo can have get
and set methods like the ones shown.

Similar Messages

  • Hi all .hope all is well ..A quick trim question

    Hi all
    Hope all is well ......
    I have a quick trim question I want to remove part of a string and I am finding it difficult to achieve what I need
    I set the this.setTitle(); with this
    String TitleName = "Epod Order For:    " + dlg.ShortFileName() +"    " + "Read Only";
        dlg.ShortFileName();
        this.setTitle(TitleName);
        setFieldsEditable(false);
    [/code]
    Now I what to use a jbutton to remove the read only part of the string. This is what I have so far
    [code]
      void EditjButton_actionPerformed(ActionEvent e) {
        String trim = this.getTitle();
          int stn;
          if ((stn = trim.lastIndexOf(' ')) != -2)
            trim = trim.substring(stn);
        this.setTitle(trim);
    [/code]
    Please can some one show me or tell me what I need to do. I am at a lose                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

    there's several solutions:
    // 1 :
    //you do it twice because there's a space between "read" and "only"
    int stn;
    if ((stn = trim.lastIndexOf(' ')) != -1){
        trim = trim.substring(0,stn);
    if ((stn = trim.lastIndexOf(' ')) != -1){
          trim = trim.substring(0,stn);
    //2 :
    //if the string to remove is always "Read Only":
    if ((stn = trim.toUpperCase().lastIndexOf("READ ONLY")) != -1){
       trim = trim.substring(0,stn);
    //3: use StringTokenizer:
    StringTokenizer st=new StringTokenizer(trim," ");
        String result="";
        int count=st.countTokens();
        for(int i=0;i<count-2;i++){
          result+=st.nextToken()+" ";
        trim=result.trim();//remove the last spaceyou may find other solutions too...
    perhaps solution 2 is better, because you can put it in a separate method and remove the string you want to...
    somthing like:
    public String removeEnd(String str, String toRemove){
      int n;
      String result=str;
      if ((n = str.toUpperCase().lastIndexOf(toRemove.toUpperCase())) != -1){
       result= str.substring(0,stn);
      return result;
    }i haven't tried this method , but it may work...

  • Quick script question

    Hi all,
    Could anyone advise me if i can add anything within - header('Location: http://www.mysite.co.uk/thankyou.html'); in the script below so as the page
    re- directs back to the main index page after a few seconds ?
    Thankyou for any help.
    <?php
    $to = '[email protected]';
    $subject = 'Feedback form results';
    // prepare the message body
    $message = '' . $_POST['Name'] . "\n";
    $message .= '' . $_POST['E-mail'] . "\n";
    $message .= '' . $_POST['Phone'] . "\n";
    $message .= '' . $_POST['Message'];
    // send the email
    mail($to, $subject, $message, null, '');
    header('Location: http://www.mysite.co.uk/thankyou.html');
    ?>

    andy7719 wrote:
    Mr powers gave me that script so im rather confused at this point in time
    I don't think I "gave" you that script. I might have corrected a problem with it, but I certainly didn't write the original script.
    What you're using is far from perfect, but to suggest it would lay you open to MySQL injection attacks is ludicrous. For you to be prone to MySQL injection, you would need to be entering the data into a MySQL database, not sending it by email.
    There is a malicious attack known as email header injection, which is a serious problem with many PHP email processing scripts. However, to be prone to email header injection, you would need to use the fourth argument of mail() to insert form data into the email headers. Since your fourth argument is null, that danger doesn't exist.
    One thing that might be worth doing is checking that the email address doesn't contain a lot of illegal characters, because that's a common feature of header injection attacks. This is how I would tidy up your script:
    <?php
    $suspect = '/Content-Type:|Bcc:|Cc:/i';
    // send the message only if the E-mail field looks clean
    if (preg_match($suspect, $_POST['E-mail'])) {
      header('Location: http://www.example.com/sorry.html');
      exit;
    } else {
      $to = '[email protected]';
      $subject = 'Feedback form results';
      // prepare the message body
      $message = 'Name: ' . $_POST['Name'] . "\n";
      $message .= 'E-mail: ' . $_POST['E-mail'] . "\n";
      $message .= 'Phone: ' . $_POST['Phone'] . "\n";
      $message .= 'Message: ' . $_POST['Message'];
      // send the email
      mail($to, $subject, $message);
      header('Location: http://www.example.com/thankyou.html');
      exit;
    ?>
    Create a new page called sorry.html, with a message along the lines of "Sorry, there was an error sending your message". Don't put anything about illegal attacks. Just be neutral.
    By the way, when posting questions here, don't use meaningless subject lines, such as "Quick script question". If you're posting here, it's almost certain to be a question about a script. It doesn't matter whether it's quick. Use the subject line to tell people what it's about.

  • Urgent help with quick translation questions

    Hello,
    I am somewhat new to Java. I have a translation to hand in in a few hours (French to English). Argh! I have questions on how I worded some parts of the translation (and also if I understood it right). Could you, great developers, please take a look and see if what I wrote makes sense? I've put *** around the words I wasn't sure about. If it sounds strange or is just plain wrong, please let know. I also separated two terms with a slash, when I was in doubt of which one was the best.
    Many thanks in advance.
    1) Tips- Always ***derive*** the exceptions java.lang.Exception and java.lang.RuntimeException.
    Since these exceptions have an excessively broad meaning, ***the calling layers will not know how to
    distinguish the message sent from the other exceptions that may also be passed to them.***
    2) The use of the finally block does not require a catch block. Therefore, exceptions may be passed back to the
    calling layers, while effectively freeing resources ***attributed*** locally
    3) TIPS- Declare the order for SQL ***statements/elements*** in the constant declaration section (private static final).
    Although this recommendation slightly hinders reading, it can have a significant impact on performance. In fact, since
    the layers of access to data are ***low level access***, their optimization may be readily felt from the user’s
    perspective.
    4) Use “inlining.”
    Inlining is a technique used by the Java compiler. Whenever possible, during compilation, the compiler
    copies the body of a method in place of its call, rather than executing a ***memory jump to the method***.
    In the example below, the "inline" code will run twice as fast as the ***method call***
    5)tips - ***Reset the references to large objects such as arrays to null.***
    Null in Java represents a reference which has not been ***set/established.*** After using a variable with a
    large size, it must be ***reassigned a null value.*** This allows the garbage collector to quickly ***recycle the
    memory allocated*** for the variable
    6) TIPS Limit the indexed access to arrays.
    Access to an array element is costly in terms of performance because it is necessary to invoke a verification
    that ***the index was not exceeded.***
    7) tips- Avoid the use of the “Double-Checked Locking” mechanism.
    This code does not always work in a multi-threaded environment. The run-time behavior ***even depends on
    compilers.*** Thus, use the following ***singleton implementation:***
    8) Presumably, this implementation is less efficient than the previous one, since it seems to perform ***a prior
    initialization (as opposed to an initialization on demand)***. In fact, at runtime, the initialization block of a
    (static) class is called when the keyword MonSingleton appears, whether there is a call to getInstance() or
    not. However, since ***this is a singleton***, any occurrence of the keyword will be immediately followed by a
    call to getInstance(). ***Prior or on demand initializations*** are therefore equivalent.
    If, however, a more complex initialization must take place during the actual call to getInstance, ***a standard
    synchronization mechanism may be implemented, subsequently:***
    9) Use the min and max values defined in the java.lang package classes that encapsulate the
    primitive numeric types.
    To compare an attribute or variable of primitive type integer or real (byte, short, int, long, float or double) to
    ***an extreme value of this type***, use the predefined constants and not the values themselves.
    Vera

    1) Tips- Always ***derive*** the exceptions java.lang.Exception and java.lang.RuntimeException.***inherit from***
    ***the calling layers will not know how to
    distinguish the message sent from the other exceptions that may also be passed to them.***That's OK.
    while effectively freeing resources ***attributed*** locally***allocated*** locally.
    3) TIPS- Declare the order for SQL ***statements/elements*** in the constant declaration section (private static final).***statements***, but go back to the author. There is no such thing as a 'constant declaration section' in Java.
    Although this recommendation slightly hinders reading, it can have a significant impact on performance. In fact, since
    the layers of access to data are ***low level access***, their optimization may be readily felt from the user’s
    perspective.Again refer to the author. This isn't true. It will make hardly any difference to the performance. It is more important from a style perspective.
    4) Use “inlining.”
    Inlining is a technique used by the Java compiler. Whenever possible, during compilation, the compiler
    copies the body of a method in place of its call, rather than executing a ***memory jump to the method***.
    In the example below, the "inline" code will run twice as fast as the ***method call***Refer to the author. This entire paragraph is completely untrue. There is no such thing as 'inlining' in Java, or rather there is no way to obey the instruction given to 'use it'. The compiler will or won't inline of its own accord, nothing you can do about it.
    5)tips - ***Reset the references to large objects such as arrays to null.***Correct, but refer to the author. This is generally considered bad practice, not good.
    Null in Java represents a reference which has not been ***set/established.******Initialized***
    After using a variable with a
    large size, it must be ***reassigned a null value.*** This allows the garbage collector to quickly ***recycle the
    memory allocated*** for the variableAgain refer author. Correct scoping of variables is a much better solution than this.
    ***the index was not exceeded.******the index was not out of range***
    The run-time behavior ***even depends on compilers.***Probably a correct translation but the statement is incorrect. Refer to the author. It does not depend on the compiler. It depends on the version of the JVM specification that is being adhered to by the implementation.
    Thus, use the following ***singleton implementation:***Correct.
    it seems to perform ***a prior initialization (as opposed to an initialization on demand)***.I would change 'prior' to 'automatic pre-'.
    ***this is a singleton***That's OK.
    ***Prior or on demand initializations***Change 'prior' to 'automatic'.
    ***a standard
    synchronization mechanism may be implemented, subsequently:***I think this is nonsense. I would need to see the entire paragraph.
    ***an extreme value of this type******this type's minimum or maximum values***
    I would say your author is more in need of a technical reviewer than a translator at this stage. There are far too serious technical errors in this short sample for comfort. The text isn't publishable as is.

  • Quick NativeWindow questions.

    Hi,
    Two Quick Questions about native window actions (I am using AIR with HTML and JS):
    1. How do you "refer" to minimize button ? - So, when a user clicks minimize, it should do an action defined in javascript.
    2. How to define click event for System tray icon ? - So I can display something when my system tray icon is double-clicked.
    Thanks.

    1. Add an event listener to the window.nativeWindow object, listening for the NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING  or DISPLAY_STATE_CHANGE events.
    2. Add an event listener to your SystemTrayIcon object. You can listen for click, mouseUp or mouseDown events, but doubleClick events are not dispatched by this object.

  • Quick REGEXP_LIKE Question

    Hi everyone,
    Had a very quick question: so I need to retrieve all records that have values in this format "type:123;target_id:456". Note that the numeric value can be 1-6 digits long for either type or target_id.
    Can someone please help me with the regexp_like-ing this?
    Thank you,
    Edited by: vi2167 on May 27, 2009 2:06 PM
    Edited by: vi2167 on May 27, 2009 2:07 PM

    WHERE REGEXP_LIKE(val,'type:\d{1,6};target_id:\d{1,6}')SY.

  • A general OOP question

    Hi
    I have a general OOP design question, and am wondering if someone could relate an answer to the following design?
    I have a class called MediaFolderImport(); - it's designed to build a window with various editing tools in it.
    Within it's constructor, I'm calling a bunch of functions to build the window...
       createTitle();
       createInstructions();
       createToolPanel();
       createDataGrid ();
       createOpen();
       createSave();
    In my document class, I instantiate it...
    public var File_Folder_Import:MediaFolderImport=new MediaFolderImport();
    and then...
    addChild(File_Folder_Import);
    Voila! - the window appears. I WAS very proud of myself.
    Now I want to access something inside the window.  Specifically, there's a radio button that was created in createToolPanel(); - I want to update it to be selected or not selected when I receieve the user's preference from an xml settings file at start up (xml is loaded into the doc class).
    General question:
    What is the best practice, smart way to have designed this?
    - call createToolPanel(); from the doc class instead of within MediaFolderImport();, and somehow (magically) have access to the radio button?
    - leave the design as is, but add some sort of listener within MediaFolderImport that listens for changes to the xml in the doc class, and updates accordingly?
    - do it the way I'm trying to, ie try to access the radio button directly from the doc class (which isn't working):
    File_Folder_Import.myRadioButton.selected = true;
    - a better way someone can briefly explain the concept of?
    Another way to explain my design is...
    - a bunch of different windows, each created by a different class
    - xml file loads preferences, which need to be applied to different tools (radio buttons, check boxes, text fields etc) in the different windows
    I read a lot of posts that talk about how public vars are mostly bad practice.  So if you are making your class vars private, what is the best way to do the kind of inter-class communicating I'm talking about here?
    I think someone throwing light on this will help me solidify my understanding of OOP.
    Thank you for your time and help.

    You're already very used to using properties for the built-in AS classes and that's the best practice means of configuring your class. It's a "state" that you want to simply expose. The get/set method moccamaximum mentioned is the ideal route.
    The main reason you want to use get/set functions is validation. You want your class to act properly if you send an invalid value. Especially if anyone else besides yourself is going to use the class. Plan for the worst.
    The general concept is, make a private variable for any 'state' you want to remember using an underscore in the variable name to easily identify it as a private var, then make get/set functions with the same name with any required validation without the underscore.
    e.g.
    package
         public class MyClass
              // property called 'mode' to track something with an int
               private var _mode:int = 0;
              public function MyClass() {} // empty constructor
              // get (type enforced)
              public function get mode():int { return mode; }
              // set, requiring a value
              public function set isChecked(modeVal:int):void
                   // if no value is sent, ignore
                   if (!modeVal) { return; }
                   _mode = modeVal;
    Your validation will go a long way to easily debugging your classes as they grow in size. Eventually they should throw exceptions and errors if they're not valid. Then you will be best practice. Do note that if your validation requires quite a bit of logic it's common to upgrade the property to a public method. get/set should be reserved for simple properties.

  • OOP Question: Calling Function in Root?

    This is kinda complicated, and I'm still trying to wrap my head around the whole concept of OOP. So right now I am building a XML Gallery, and in the FLA (Root) I've added the thumbnails. Everytime the thumbnails been clicked, it will bring up the "Detail" movieclip, which also is created in the root. And inside the Detail movieclip, I am creating a few buttons with an external class. My question is how can I call a function in the FLA (Root) when I click on the buttons inside the Detail movieclip? Note it seems I've successfully import my external class in both the root and the Detail movieclip.
    I hope I'm making sense. >_<
    Thanks for any help in advance.

    use:
    In the DetailButtons class:
    _button.addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
    private function onClick(evt:MouseEvent):void {
         dispatchEvent(new Event("Clicked");
    In the Main FLA / Root:
    var detailButtons:DetailButtons = new DetailButtons();
    addChild(detailButtons);
    detailButtons.addEventListener("Clicked", goBack);
    function goBack(evt:Event):void{
        trace("Go Back");

  • Okay quick easy question for all who have successfully uploaded videos

    hi, this is my first post in the Apple forums!
    my quick question:
    I have Quicktime Pro, and am currently exporting a video to the iPod
    but it is taking an unusually long time...
    is this normal (and by long I mean I'm @ 16% and it has been 5 minutes)
    do I just need to be more patient?
    thanks
    ^_^

    don't say that...
    I successfully uploaded videos to my iPod I just was not doing it right
    my question has been answered already so STOP BRINGING IT UP AGAIN
    also, look... many people just got their iPods today and are kinda anxious to see the video capibilities work on them, so If you do not have anything constructive to say (by calling us n00bs), then I suggest you don't say anything at all
    iPod video, Dell modded Windows XP Windows XP > your macs

  • Quick Easy Question About N580GTX-M2D15D5 Bios

    Hey guys!!
    I just have a real quick and easy (i suppose) question!
    I had bios version KH0, and MSI live update found KH1, i downloaded and flashed successfully (DOS window said please restart and press any key to exit) so i did, restarted my computer, and MSI live update utlity and gpu-z and MSI afterburner are all reporting the same bios version i had with the KH0, version 70.10.17.00.01 & date November 09, 2010
    MSI live update is not picking up the update again, so my question is, how do i know if it flashed correctly since the bios date and version remained the same?
    Thanks !

    Quote
    I had bios version KH0, and MSI live update found KH1, i downloaded and flashed successfully (DOS window said please restart and press any key to exit) so i did, restarted my computer, and MSI live update utlity and gpu-z and MSI afterburner are all reporting the same bios version i had with the KH0, version 70.10.17.00.01 & date November 09, 2010
    Quote
    version 70.10.17.00.01
    that's suppose to be, this is the version of the both bioses
    Quote
    & date November 09, 2010
    this is GPU release date, not BIOS date
    Quote
    MSI live update is not picking up the update again, so my question is, how do i know if it flashed correctly
    Get this: https://forum-en.msi.com/index.php?action=dlattach;topic=147603.0;attach=7931
    extract it somewhere, then run info1 , and look for the last line
    Quote
    since the bios date and version remained the same?
    they are not the same, your looking the wrong stuffs

  • TDMS - Quick winning Question....

    We are reviewing TDMS
    We have  one quick question ....
    After 4 years of Journey & age of landscpae, becuase of  SPDD & SPAU was not handled incidentally during "different" patch upgrades. and we assume there is slight inconsistency of " Repository objects"  " Dictionary Objects"...
    We want to acheive  In short
    We want to build a Development System which should be in synch of  " Repository objects"  " Dictionary Objects"... with out any master & application data with TDMS ?
    Can we acheive this or not ...
    TDMS provides all other luxuries, but we could get a straight confirmation as requirement as above.
    Pl Help
    Regards
    PR

    Hi Sriniwas
    If you are asking this question to make a buying decision about TDMS then i would suggest that you get in touch with your SAP customer engagement manager (account manager) and ask him to present you all the capabilities and functionalities of TDMS.
    Current version of TDMS offer multiple options and functionalities which may be useful for you.
    Now regarding the query that you have asked -
    If I understood you correctly you are looking for a functionality using which you want to create a development system which is a copy of your production system such that only repository gets copied over from production to the development system and all the client dependent application data is filtered. In the end you will have your development system which is in perfect sync as far as repository and DDIC is concerned.
    The above can certainly be achieved using the TDMS Shell process within TDMS. TDMS Shell is also used as a process to prepare your receiver system for TDMS data transfer.
    I hope this info helps
    Pankaj.

  • Quick naming question

    Wasnt sure if its a naming issue or not but Ive never ran into the problem and Im not sure how to describe it....so here goes.
    Question: Is there a way to insert a string into the name of a component name and have java see it as the actual component name. (see that question still sounds incorrect)
    What I mean is......
    you have 10 buttons named oneB, twoB, threeB,......tenB
    I need to either change a whole lot of code and make what I want to be simple, very large and complex or, find a way to....
    "one"B.setLocation(whereverNotImportant);
    or
    (someObject.getString( ) ) + B.setLocation(whereverNotImportant);
    It looks really odd to me. If theres a way to do it, it just saved me a lot of annoyance.....if not well, Im gonna need more energy drinks.

    Paul5000 wrote:
    Fair enough. I kept adding features onto the code and it grew into needing something different. Was just hoping there was a quick workaround so I didnt have to go back and recode half of it.When you've got Franken-code, the answer is to recode it.

  • Quick Notation Question - Data Rates/Frame Rates/Interlacing

    Finally upgraded to a decent prosumer camera and I'm trying to decipher what the manual is telling me about the many different formats it shoots and and the associated options.  I keep seeing things like "There are two basic shooting modes: 720p and 1080i/p.", which I'm finding confusing.  In my understanding, the "p" in 720p means progressive video and the "i" in 1080i means interlaced.  So what do I make of 1080i/p?
    On top of this, my camera shoots in "native" mode, which drops duplicate frames used in "over 60" formats.  This will give me variations in the notation like:
    720/24pN
    720p Native 60 fps
    1080i/24p
    1080/24PN
    Can someone give me a quick primer about frame rate vs data rate and explain how to read these notations?  I'd appreciate it quite a bit.
    Thanks!

    There are so many cameras, capable of so many different formats that providing a manufacturer and model could be helpful in this discussion.
    Jim's answer is absolutely correct but I'm going to re-state for clarification.
    The i/p designation means you can chose to record as interlaced or progressive for a given resolution.
    It sounds like your camera is designed to "capture" images at 60 frames per second, selecting "native" mode means extra frames are deleted and only the desired frames, based on frame rate setting, are recorded to memory. The advantage of "native" @ 24fps is you save space on your memory card. The advantage of NOT using "native" mode is that all 60 frames per second are recorded, but the file metedata tells playback software to only show the frames needed for the specified frame rate (i.e. 24). Since all 60 frames per second are recorded, you use more memory but you also have the option of retrieving all the those frames, if you so desire, at a later time (i.e. for smoother slo-mo).
    To be honest I don't know what your spec of 1080i/24p means. If that is truly an option then I would guess it means it will record a 24p image but the metedata would indicate the file should playback at 30fps interlaced by adding the proper 3:2 pulldown. This would give you that "film" look in a broadcast compatible format.
    For the most part, you don't want use use any interlaced settings. Very few display devices still in use can properly display interlaced images. Interlacing is only required in some broadcast specifications.
    To answer the second part of your question;
    Frame rates are an indication of how many times the moving image is captured over a given period (per second). Higher frame rates means smoother, more "real life" motion. Data rates can generally be considered an indication of image or audio quality. Higher levels of compression result in lower data rates and (generally) lower quality. If squeezing more hours of footage on fewer memory cards is more important than getting the best image quality, choose a lower data rate. Higher frame rates (more images per second) inherently require a higher data rate to retain the same quality as fewer frames at a lower data rate.

  • OOPS Question

    Hi to all,
    . I am learning Java Now. I am in starting stage. I have a question on OOPS in Java. Is Java Supports Fully Object Oriented Concepts? Is it Fully OOPS Language? Some one told me that *"We Can Access Member Functions of a Class without creating object to that"*. As i know about that we can do that using static keyword. and static keyword is not in the OOPS principals.
    And another reason is *"Java Doesn't Support Multiple Inheritance".* we can do that using Interfaces, and those Interfaces are not part of OOPS. Is those above mentioned two reasons are true? if you know in details, kindly explain me. I am very thankful to you. Thanks in advance.

    jverd wrote:
    rdkh wrote:
    jverd wrote:
    rdkh wrote:
    you can access instance methods without any object instances,No, you cannot.please teach me.
    Please look at my code and tell me what I did wrong?
    (1) I grabbed a reference to "foo()".
    (2) "foo()" is an instance method of "Main".
    (3) there are no instances of "Main"... so, that is impossible???
    No!Yes, there is an instance of Main, and yes, it is impossible to access an instance method without an instance of the class whose method it is (as opposed to accessing an instance of the Method class that represents that method).
    public static void main(String[] args) {
    Method m = Main.class.getMethod("foo", null); // access to instance method but no instance
    m.invoke(new Main(), new Object[0]);  // to execute, an instance is needed
    }m.invoke(new Main()), new Object[0])
    There's also an instance of Method, and instance of Class, an instance of String, and an instance of Object[].
    You cannot invoke an instance method without an instance of the class whose method you're invoking.
    What I did is what I said. I got an instance method of "Main" without creating an instance of "Main". That is what the op wanted.Okay, so you obtained an instance of the Method class that corresponds to a particular instance method in Main, without obtaining an instance of Main. So what? That's totally meaningless. You can't invoke it without an instance of Main.
    Edited by: jverd on Jan 13, 2010 9:55 PMcool.
    thanks very much. appreciated it.

  • Two really quick/dumb questions!

    Hi All,
    I have just bought a new Mac Mini and hooked it up to my Samsung 55 inch TV via HDMI and everything seems do be working great.
    My two dumb questions are:
    1: where on the new OS (I had a Mac 5 years ago and things have changed) is the top "Finder" bar and "disc" icon to save files?
    2: In Safari I do not seem to have a tools bar where I can for example open another tab for a new web page.
    Hope you can help a nubby :-)

    You are running a Mini so it might be that the screen resolution is not exact for your display. I have used a Mini with a conventional display but not HDTV. You might need to go into the settings for the TV to set the screen resolution to accommodate the mini's capabilities. Sorry that  I can't offer more on that score; when I use my Sony Bravia HDTV  it is with the iPad2 and HDMI and I have encountered no issues. Perhaps someone else on the forum has better insight into the Menu Bar problem on the Samsung as the principal display. 

Maybe you are looking for